@Resource 注解的作用【和 @Autowired 的对比】

今天看到一段代码使用的是 @Resource 的注解,的确是第一次看到这个注解,百度一查才知道,原来和 @Autowired 效果一样,但也有一定的区别。

      两个注解都可以用来注入 bean ,@Resource 是 JavaEE 的注解,@Autowired是Spring的注解,他俩都可以写在属性名上, setter方法上,@Autowired 还可以写在普通方法上,构造器上,而且两者注入的依据有点不同 :

1 . @Autowired 默认是按照类型进行装配的,而且默认要求被注入的 bean 必须存在,如果允许不存在的话,必须加上 required = false 的属性,(如果被类型匹配上的 Bean 有多个,会报异常,解决方案可以使用 @Primary 注解 , 或者指定 Bean 的名字)如:

@Autowired(required=false)
private UserDao userDaoImpl;

如果想要根据 bean 的 name 来进行装配,则需要指定 @Qualifier(“bean名字”),如:

@Autowired
@Qualifier("userDaoImpl")
private UserDao userDaoImpl;

但是如果需要使用 @Autowired 和 @Qualifier 两个注解来注入 Bean , 还不如使用下面的 @Resurce 呢 .

2 . @Resource 默认是按照名字进行装配的,不指定 bean 名字时会自动根据属性名进行注入,当找不到默认的名字的bean时就会根据类型去注入;但是如果指定了 name 属性,则按照指定的 bean 的 name进行注入,不会再根据类型去注入了,如:

//默认按属性名注入
@Resource
private UserDao userDaoImpl;


//按照指定的 bean的 name注入
@Resource(name="userDaoImpl")
private UserDao userDaoImpl

       后来我又看到了一个用于注入 Bean 的注解 , @Inject , 它是 JSR-330 提供的注解 , 这个注解在 Struts2 中使用的比较多 , 使用方法和 @Autowired 差不多 , 也是按照类型进行注入的 .

 

 

 

 

 

1

转载于:https://www.cnblogs.com/daimajun/p/7150075.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值