基于注释配置bean和装饰bean

1、组件扫描

Spring容器能够从classpath(类路径)下自动扫描、侦测和实例化具有特定注释的组件。

2、特定注释组件

–@Component: 基本注解, 标识了一个受 Spring 管理的组件

–@Respository: 标识持久层组件

–@Service: 标识服务层(业务层)组件

–@Controller: 标识表现层组件

对于扫描到的组件, Spring 有默认的命名策略: 使用非限定类名, 第一个字母小写. 也可以在注解中通过 value 属性值标识组件的名称

3、在spring配置中如何配置注释组件的bean

a、 声明<context:component-scan>,在base-package属性中指定需要的基类包,spring容器会自动扫描基类包以及其子类包中的所有类,如    果有多个包时,用逗号隔开b、如果仅需要扫描指定的类,可使用resource-pattern属性,如<context:component-scan base-package="com.spring.bean" reso  urce-pattern="autowire/*.class"/>c、<context:include-filter>子节点需要包含的目标类,需要配合使用   <context:exculde-filter>子节点需要排除包含的目标类

<context:include-filter> 和 <context:exclude-filter> 子节点支持多种类型的过滤表达式:

1 <context:component-scan base-package="com.spring.bean.annotation" resource-pattern="service/*.class"></context:component-scan>
2 <context:component-scan base-package="com.spring.bean.annotation" use-default-filters="false">
3  <context:include-filter type="annotation" expression="org.springframework.stereotype.Service"/>
4  </context:component-scan>
5 <context:component-scan base-package="com.spring.bean.annotation" use-default-filters="false">
6  <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Service"/>
7  </context:component-scan>

组件装配

<context:component-scan> 元素还会自动注册 AutowiredAnnotationBeanPostProcessor实例, 该实例可以自动装配具有 @Autowired 和 @Resource 、@Inject注解的属性.

使用 @Autowired 自动装配 Bean

–构造器, 普通字段(即使是非 public), 一切具有参数的方法都可以应用@Authwired 注解

–默认情况下, 所有使用 @Authwired 注解的属性都需要被设置. 当 Spring 找不到匹配的 Bean 装配属性时, 会抛出异常, 若某一属性允许不被设置, 可以设置 @Authwired 注解的 required 属性为 false

–默认情况下, 当 IOC 容器里存在多个类型兼容的 Bean 时, 通过类型的自动装配将无法工作. 此时可以在 @Qualifier 注解里提供 Bean 的名称. Spring 允许对方法的入参标注 @Qualifiter 已指定注入 Bean 的名称

– @Authwired 注解也可以应用在数组类型的属性上, 此时 Spring 将会把所有匹配的 Bean 进行自动装配.

–@Authwired 注解也可以应用在集合属性上, 此时 Spring 读取该集合的类型信息, 然后自动装配所有与之兼容的 Bean.

–@Authwired 注解用在 java.util.Map 上时, 若该 Map 的键值为 String, 那么 Spring 将自动装配与之 Map 值类型兼容的 Bean, 此时 Bean 的名称作为键值

•使用 @Resource 或 @Inject

自动装配 Bean

•Spring 还支持 @Resource 和 @Inject 注解,这两个注解和 @Autowired 注解的功用类似

•@Resource 注解要求提供一个 Bean 名称的属性,若该属性为空,则自动采用标注处的变量或方法名作为 Bean 的名称

•@Inject 和 @Autowired 注解一样也是按类型匹配注入的 Bean, 但没有 reqired 属性

•建议使用 @Autowired 注解


 

				
时间: 2024-12-29 11:25:37

基于注释配置bean和装饰bean的相关文章

Spring学习(13)--- 基于Java类的配置Bean 之 @Configuration &amp; @Bean注解

基于Java配置选项,可以编写大多数的Spring不用配置XML,但有几个基于Java的注释的帮助下解释.从Spring3.0开始支持使用java代码来代替XML来配置Spring,基于Java配置Spring依靠Spring的JavaConfig项目提供的很多优点.通过使用@Configuration, @Bean ,@Import ,@DependsOn 来实现Java配置Spring. 1) @Configuration & @Bean 注解: 在Spring的新的Java-Configu

Spring3.2 中 Bean 定义之基于 XML 配置方式的源码解析

Spring3.2 中 Bean 定义之基于 XML 配置方式的源码解析 本文简要介绍了基于 Spring 的 web project 的启动流程,详细分析了 Spring 框架将开发人员基于 XML 定义的 Bean 信息转换为 Spring 框架的 Bean Definition 对象的处理过程,向读者展示了 Spring 框架的奥妙之处,可以加深开发人员对 Spring 框架的理解. 0 评论: 秦 天杰, 软件工程师, IBM China 2013 年 9 月 02 日 内容 在 IBM

Bean的基于XML配置方式

基于XML配置 Beans.xml <?xml version="1.0" encoding="UTF-8" ?> <beans xmlns="http://www.springframework.org/schema/beans" 1.默认命名空间 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 2.xsi标准命名空间,用于指定自定义命名空间的Sc

当singleton Bean依赖propotype Bean,可以使用在配置Bean添加look-method来解决

在Spring里面,当一个singleton bean依赖一个prototype bean,因为singleton bean是单例的,因此prototype bean在singleton bean里面也会变成单例. 这个怎么解决呢???可以使用Spring提供的lookup-method来注入. 举例说明:先列出相关类:代码中的说明足够说明问题.user类:prototype bean package com.cn.pojo; import java.io.Serializable; publi

Spring源码解析 – @Configuration配置类及注解Bean的解析

在分析Spring 容器创建过程时,我们知道容器默认会加载一些后置处理器PostPRocessor,以AnnotationConfigApplicationContext为例,在构造函数中初始化reader时,加载默认后置处理器.其中 ConfigurationClassPostProcessor这个后置处理器专门处理带有@Configuration注解的类,ConfigurationClassPostProcessor后置处理实现了BeanDefinitionRegistryPostProce

Bean 注解(Annotation)配置(2)- Bean作用域与生命周期回调方法配置

Spring 系列教程 Spring 框架介绍 Spring 框架模块 Spring开发环境搭建(Eclipse) 创建一个简单的Spring应用 Spring 控制反转容器(Inversion of Control – IOC) 理解依赖注入(DI – Dependency Injection) Bean XML 配置(1)- 通过XML配置加载Bean Bean XML 配置(2)- Bean作用域与生命周期回调方法配置 Bean XML 配置(3)- 依赖注入配置 Bean XML 配置(

Spring MVC整合Memcached基于注释的实践使用

本文并不介绍memcached的安装使用,也不长篇大论哪个缓存框架性能好.而是结合自己实际开发,来谈谈自己的使用. 一.配置文件application-cache.xml <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.or

Spring(七)之基于注解配置

基于注解的配置 从 Spring 2.5 开始就可以使用注解来配置依赖注入.而不是采用 XML 来描述一个 bean 连线,你可以使用相关类,方法或字段声明的注解,将 bean 配置移动到组件类本身. 在 XML 注入之前进行注解注入,因此后者的配置将通过两种方式的属性连线被前者重写. 一.@Required注解 @Required 注解应用于 bean 属性的 setter 方法,它表明受影响的 bean 属性在配置时必须放在 XML 配置文件中,否则容器就会抛出一个 BeanInitiali

[刘阳Java]_Spring AOP基于XML配置介绍_第9讲

基于注解配置的Spring AOP固然简单,但是这节我们会给大家介绍基于XML配置的AOP是如何应用的.为什么这么说了,因为后面我们还会介绍到Spring对Dao操作的事务管理(基于AOP的XML文件方式来配置事务) 1. 基于XML文件方式来配置Spring的AOP,则我们需要的一些基本元素如下 <aop:config.../>,此标签很重要.它是在XML里配置AOP功能的核心标签 all aspect and advisor elements must be placed within a