spring @Resource 和 @Autowired ,@Inject 的区别

本文深入解析了Spring框架中@Autowired、@Resource和@Inject三个依赖注入注解的区别与特性,包括它们的使用条件、与其它注解的配合、泛型注入能力等,为开发者提供全面的指导。

针对@Resource   和   @Autowired的区别,各大论坛上众说纷纭,

这里对这三个注解进行简单的分析

1、@Autowired 

           注入可以为空 required=false  ;

           可以和首选项注解@Primary注解配合使用 ;

           可以通过@Qualifier注解指定bean的名称 ;

           如果没有使用@Qualifier指定bean名称,则将被@Autowired注解的属性名作为Bean的名称

           如果容器中存在多个名称不同类型相同的Bean, 被@Autowired注解的属性名在容器中不存在并且没有通过@Qualifier修饰

                   则抛出异常。 

           如果有通过@Qualifier修饰,如果value值在容器中不存在,即使同种类型只有一个对象,也抛出异常。

           如果容器中一种类型只有一个对象 Bean , 即使属性名称在容器中不存在,也会默认获取容器中唯一的值。

           可以注入泛型类型

2、@Resource

           注入不可以为空

           不可以和@Primary配合使用

           可以通过name属性设置Bean的值

           如果容器中存在多个值,

           如果容器中存在多个名称不同类型相同的Bean, 被@Resource注解的属性名在容器中不存在并且没有添加name属性值则                      抛出异常。 

            如果name注解属性值在容器中不存在,即使同种类型只有一个对象,也抛出异常。

            如果容器中一种类型只有一个对象 Bean , 即使属性名称在容器中不存在,也会默认获取容器中唯一的值。

            不可以注入泛型类型

3、@Inject  

          和@Autowried注解功能类似,唯一不同的是@Inject注解没有required属性,不可以为空

 

 

         综合考虑,个人推荐使用@Autowired  ,功能最全 , 和spring最兼容

      

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值