@Resources @Inject @Autowied @Qualifier @named

Annotations

Annotation    Package                                            Source
@Resource javax.annotation                                 Java
@Inject         javax.inject                                            Java
@Qualifier javax.inject                                                Java
@Autowired org.springframework.bean.factory    Spring

@Autowied

是通过ByType注入的,可以在field.contractor注入,如果是有两个以及以上相同的类型或者没有就会报错,但是@Qualifier配合使用可以制定bean的名称也就是把自动装配类型从By-type 变成By-name 当然 @Autowied有一个属性为Required 当值为false时
 

@Autowired(required=false)
 private HelloChina helloChina;

当不能确定 Spring 容器中一定拥有某个类的 Bean 时,可以在需要自动注入该类 Bean 的地方可以使用  @Autowired (required =  false ),这等于告诉 Spring:在找不到匹配 Bean 时也不报错
----------------------------------------------------------

@Inject Annotation based on JSR-330

该注解几乎可以完全替代Spring的@Autowired注解。所以除了使用Spring特定的@Autowired注解,我们可以选择@Inject。

和@Autowired一个,@Inject可以用来自动装配属性、方法和构造器;与@Autowired不同的是,@Inject没有required属性。因此@Inject注解注入的依赖关系必须存在,否则报异常。

与@Autowired一样,@Inject有自己限定的方法,即处理限定歧义性的依赖,配置如下:

@Inject
@Named("xxName")
private HelloChina helloChina;


如上所示,@Qualifier注解尝试注入ID为xxName的Bean。
原理,也即是将byType自动装配转换为byName自动装配。
-------------------------

@Resource

 默认按照名称装配,当找不到与名称匹配的bean才会按照类型装配,可以通过name属性指定,如果没有指定name属性,当注解标注在字段上,即默认取字段的名称作为bean名称寻找依赖对象,当注解标注在属性的setter方法上,即默认取属性名作为bean名称寻找依赖对象.
注意:如果没有指定name属性,并且按照默认的名称仍然找不到依赖的对象时候,会回退到按照类型装配,但一旦指定了name属性,就只能按照名称装配了

参考博客:

http://blog.sina.com.cn/s/blog_a795a96f01016if1.html


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值