@Autowired

@Autowired和@Resouce的区别:

1:Autowired是Spring自带的注解,默认采用按类型加载bean。
2:Resource是JDK1.6的注解,默认采用按名称加载bean。



3:如果遇见两个bean有相同的类型,@Autowired应该通过@Qualifier(通过名称加载)注解协作注入:

@Autowired
@Qualifier(value="comment1")
private Comment firstComment;


分析Autowired底层加载方式:

当 Spring 容器启动时,AutowiredAnnotationBeanPostProcessor 将扫描 Spring 容器中所有 Bean,当发现 Bean 中拥有@Autowired 注解时就找到和其匹配(默认按类型匹配)的 Bean并注入到对应的地方中去。 源码分析如下:

1:通过org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor可以实现依赖自动注入。通过这个类来处理@Autowired和@Value这俩Spring注解。它也可以管理JSR-303(JDK)的@Inject注解(如果可用的话)。在AutowiredAnnotationBeanPostProcessor构造函数中定义要处理的注解:
反射生成Bean对象。



2:通过buildAutowiringMetadata(final Class<?> clazz)解析等待 自动注入 类的所有属性。


3: 通过分析 所有字段和方法 并初始化 org.springframework.beans.factory.annotation.InjectionMetadata,初始化对象。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值