Spring使用注解的方式配置bean的属性-bean之间的引用关系
2017-07-20 10:50
465 查看
前边我们讲过了使用注解的方式来为类创建一个bean的实例,使其被SpringIOC容器管理。即先使用注解标注在类上,然后使用<context:component-san>标签指定Spring扫描的包及其子包的类。下边我们来讲一讲如何使用注解的方式来为bean的属性赋值,即如何使用注解的方式指定bean之间的关联关系。
<context:component-scan>这个配置在IOC配置文件中的标签,除了可以指定要扫描的组件之外呢,它还有一个很重要的功能,就是会自动注册一个AutowiredAnnotationBeanPostPorcessor后置处理器的实例,这个后置处理器可以自动的装配具有@Autowired/@Resource/@Inject的属性----即将存在于IOC容器中的bean的实例于相同属性类型的变量装配起来,即划等号。
在这三种注解中,@Autowired注解是最常见的注解。其实他们三个注解的功能都是一样的,我们常用@Autowired,所以我们着重来讲一讲它。
1. 功能
@Autowired的功能是:可以自动装配具有兼容类型的单个bean的属性。即被@Autowired注解标注的属性,Spring会自动的从当前IOC容器中寻找匹配的属性类型,然后将其赋值给这个属性。
2. 使用范围
@Autowired注解可以写在属性上、构造方法上、一切具有参数的方法上(如setter方法)。
3. 特性
默认情况下,所有被@Autowired注解标注的属性,都必须在IOC容器中可以找到对应的属性类型的bean,否则会报异常,因为一旦@Autowired注解添加到属性上,当IOC容器初始化时,Spring的自动匹配机制就会触发,找不到就会包notfoundbean异常。如果我们不希望某个属性不被设置也不会出异常,可以在这个属性的@Autowired注解中添加属性required="false"。
④ 冲突
当IOC容器中存在多个与被@Autowired注解的属性(接口)的类型相同的bean(接口的实现类),那么Spring会去找默认的非限定类名去匹配属性(这个非限定类名可以使用value属性设定),如果不存在这个首字母小写的非限定类名,也可以在set方法中的形参前加上@Qualify(beanName)来指定这个形参中属性对应的bean的名称、
⑤ 作用于数组、集合、Map
当@Autowired注解定义在数组类型的属性上时,Spring会将所有和数组类型匹配的bean都装配到这个数组中
当@Autowired注解定义在集合类型的属性上时,Spring会检查集合的类型,然后将IOC中所有满足这个类型bean都装配到这个集合中
当@Autowired注解定义在Map类型的属性上时,Spring会检查Map的值的类型,然后将所有满足条件的bean以beanName-bean的形式放到这个Map属性中
<context:component-scan>这个配置在IOC配置文件中的标签,除了可以指定要扫描的组件之外呢,它还有一个很重要的功能,就是会自动注册一个AutowiredAnnotationBeanPostPorcessor后置处理器的实例,这个后置处理器可以自动的装配具有@Autowired/@Resource/@Inject的属性----即将存在于IOC容器中的bean的实例于相同属性类型的变量装配起来,即划等号。
在这三种注解中,@Autowired注解是最常见的注解。其实他们三个注解的功能都是一样的,我们常用@Autowired,所以我们着重来讲一讲它。
1. 功能
@Autowired的功能是:可以自动装配具有兼容类型的单个bean的属性。即被@Autowired注解标注的属性,Spring会自动的从当前IOC容器中寻找匹配的属性类型,然后将其赋值给这个属性。
2. 使用范围
@Autowired注解可以写在属性上、构造方法上、一切具有参数的方法上(如setter方法)。
3. 特性
默认情况下,所有被@Autowired注解标注的属性,都必须在IOC容器中可以找到对应的属性类型的bean,否则会报异常,因为一旦@Autowired注解添加到属性上,当IOC容器初始化时,Spring的自动匹配机制就会触发,找不到就会包notfoundbean异常。如果我们不希望某个属性不被设置也不会出异常,可以在这个属性的@Autowired注解中添加属性required="false"。
④ 冲突
当IOC容器中存在多个与被@Autowired注解的属性(接口)的类型相同的bean(接口的实现类),那么Spring会去找默认的非限定类名去匹配属性(这个非限定类名可以使用value属性设定),如果不存在这个首字母小写的非限定类名,也可以在set方法中的形参前加上@Qualify(beanName)来指定这个形参中属性对应的bean的名称、
⑤ 作用于数组、集合、Map
当@Autowired注解定义在数组类型的属性上时,Spring会将所有和数组类型匹配的bean都装配到这个数组中
当@Autowired注解定义在集合类型的属性上时,Spring会检查集合的类型,然后将IOC中所有满足这个类型bean都装配到这个集合中
当@Autowired注解定义在Map类型的属性上时,Spring会检查Map的值的类型,然后将所有满足条件的bean以beanName-bean的形式放到这个Map属性中
相关文章推荐
- Spring4----使用注解方式配置bean和bean的属性
- [原创]java WEB学习笔记99:Spring学习---Spring Bean配置:自动装配,配置bean之间的关系(继承/依赖),bean的作用域(singleton,prototype,web环境作用域),使用外部属性文件
- Spring学习(九)使用ioc注解方式配置bean
- 04-Spring-使用ioc注解方式配置bean
- Spring - 配置Bean - 自动装配 关系 作用域 引用外部属性文件
- Spring中bean管理-配置文件和注解方式混合使用
- Spring4深入理解IOC&DI02----Bean配置--自动装配、bean之间的继承与依赖、使用外部属性文件
- Spring学习(九)使用ioc注解方式配置bean
- spring学习笔记(12)——使用注解方式配置bean
- Spring使用注解的方式注入属性时的xml文件配置
- Sping中可以使用property的ref属性建立bean之间的引用关系
- 学习《Spring实战(第3版)》扎记1:Spring使用注解配置Bean的方式
- [原创]java WEB学习笔记103:Spring学习---Spring Bean配置:基于注解的方式(基于注解配置bean,基于注解来装配bean的属性)
- Springboot 中同时使用mybatis注解和springbean-xml配置方式
- Spring 配置bean, 注解方式配置 xml方式要生产set方法方便属性注入,注解方式不需要,利用反射机制注入
- 【Spring三】使用注解配置bean
- 详细配置说明||Spring 使用注解方式进行事务管理
- spring aop的使用(注解方式以及基于xml配置方式)
- 用spring的注解建立bean与bean之间的关系组件装配及自动注入依赖对象
- Spring2.5.x以后使用注解方式的事务管理配置