Spring-04 依赖注入

手动注入

  • set方法注入

<bean name="userService" class="com.xxx.service.UserService">
<property name="orderService" ref="orderService"/>
</bean>

  • 构造方法注入

<bean name="userService" class="com.xxx.service.UserService">
<constructor‐arg index="0" ref="orderService"/>
</bean>

自动注入

  • 1. XML的autowire自动注入

1. byType

 

<bean id="userService" class="com.xxx.service.UserService" autowire="byType"/>

         获取到set方法中的唯一参数的参数类型,并且根据该类型去容器中获取bean
         如果找到多个,会报错。

2. byName
         找到所有set方法所对应的XXX部分的名字
         根据XXX部分的名字去获取bean
3. constructor

         spring利用构造方法的参数信息从Spring容器中去找bean,找到bean之后作为参数传给构造方法,从而实例化得到一个bean对象,并完成属性赋值(属性赋值的代码得程序员来写)。
其实构造方法注入相当于byType+byName,普通的byType是根据set方法中的参数类型去找
bean,找到多个会报错,而constructor就是通过构造方法中的参数类型去找bean,如果找到多个会根据参数名确定。
4. default

          <bean>标签中设置的autowire如果为default,那么则会用<beans>标签中设置的autowire。
5. no

         关闭autowired

 

  • 2. @Autowired注解的自动注入

 

byType和byName的结合。@Autowired注解可以写在:
1. 属性上:先根据属性类型去找Bean,找到多个再根据属性名确定一个
2. 构造方法上:先根据方法参数类型去找Bean,找到多个再根据参数名确定一个
3. set方法上:先根据方法参数类型去找Bean,如果找到多个再根据参数名确定一个

寻找注入点

代补充

注入点进行注入

方法入口:

AutowiredAnnotationBeanPostProcessor的#postProcessProperties(),遍历所找到的注入点进行注入。

  • 字段注入
  • set方法注入
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值