Spring学习-bean注入方式与注入模型

bean注入方式

  1. 构造函数注入
  2. setter方法注入

官网上面有解释

bean注入模型

  1. no
  2. byType
  3. byName
  4. constructor

官网上的介绍

SpringIOC容器,负责实例化、配置和组装bean。它可以有两种方式进行配置和组装bean,每种方式,又可以分为以什么模型来完成。

构造方法注入的方式,只能通过构造模型注入。setter方法注入的方式,可以通过bean的名称或者bean的class类型注入(byType/byName)。

 bean的自动装配

bean的自动装配,分为三种。byName,byType,constructor。

解释:定义一个bean,里面又依赖某个bean,在没有对这个依赖bean做任何注入的时候,如果对这个定义bean,指定某种自动装配。那么Spring会根据自动装配模型,通过setter方法或构造函数,进行属性填充。

比如:byName

byType:

需要在定义的bean中,定义相应的setter方法。

 bean的自动装配与@Autowire

在实际开发中,我们没有指定bean的自动装配模型,大多数都是在需要依赖属性上面加上@Autowire注解。无需多余代码,Spring也会把这个依赖属性完成填充。那是不是说明加了@Autowire注解就说明我们这个bean就是自动装配了呢。其实不然,通过源码,可以看到,@Autowire注解是调用了bean的后置处理器AutowiredAnnotationBeanPostProcessor的postProcessProperties方法完成属性注入。方法的核心其实就是运用java反射技术,field.set(object,args);

这个跟bean注入模型不对应,bean的注入模型分为byType,和byName,constructor。基于setter方法和构造函数。

 

@Autowire与@Resource

在实际开发中,使用@Resource注解属性,也可以完成属性的依赖注入。那么@Autowire与@Resource两者有什么区别呢?

  1. 两者的包不同,@Resource是 javax.annotation包下的,归属于jdk;@Autowire是 org.springframework.beans.factory.annotation包下的,归属于Spring。
  2. 两者完成属性注入时使用的bean的后置处理器不同。@Resource 是用CommonAnnotationBeanPostProcessor.postProcessProperties()方法,@Autowire则是AutowiredAnnotationBeanPostProcessor bean后置处理器来完成属性注入。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值