spring注解驱动开发--自动装配之找bean

用一句话描述Autowired的作用就是,在ioc容器中找到并装配需要的组件。
Autowired功能相似@Resource和@Inject都有什么相似与不同呢?在下面给大家一一揭晓

@Autowired 如何找到需要的组件

  1. 默认使用类型去找,例如
 applicationContext.getBean(Dao.class)
  1. 如果找到多个,再把名称当作id去找,所以这里注入的名字一般不要乱写,例如
      @Autowired 
       Dao dao;
  	applicationContext.getBean(dao);
  1. 当然也可以和@Qualifier(“dao1”)搭配使用,这样就指定了需要加载的bean的id。
        @Qualifier("dao1")
        @Autowired 
         Dao dao;
  1. 自动装配默认一定要把属性值装配好,如果找不到某个属性组件,就会报错;但是也可以给autowired的属性值设置为false;
        @Autowired(required=false) 
         Dao dao;

5.如果出现多个相同的bean时,也可以使用@Primary来指定一个首选的bean装载。其余的可以使用@Qualifier去指定具体的id。

@Autowired 是如何实现装配的

它是由与bean的后置处理器完成装配的,即AutowiredAnnotationBeanPostProcessor,在之前介绍组件注册时已经介绍过后置处理器相关原理,感兴趣的童鞋可以自己去看下源码。

与@Resource、@Inject的区别和联系

  1. @Resource是JSR250提供的自动注入的方式,也就会说它是java规范提供,用法与@Autowired相差较多,它不能与primary和qualifier注解配合使用,也没有Autowired的required属性,只有一个与value属性类似的name属性,可以指定bean的id。
  2. @Inject是JSR330提供的,它的功能和@Autowired基本一致,但是没有required属性。
  3. 综合以上两种注解与@Autowired的对比,还是spring比较强大。。。。。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值