spring注解---@Resource和@Autowired

1、@Resource是由注释处理器CommonAnnotationBeanPostProcessor负责解析处理的。@Autowired是由注释处理器AutowiredAnnotationBeanPostProcessor 负责解析处理的。

2、@Resource默认情况下是按name匹配的,如果匹配失败,再按type匹配。比如ApplicationContext.xml中配置<bean id="processEngine" factory-bean="springHelper" factory-method="createProcessEngine" />。 如果@Resource ProcessEngine engine;则spring将查找beanId为“processEngine”的类,所以找不到,则继续按类型ProcessEngine.class继续寻找,so找到了,则将该实例赋值给engine。  如果@Resource(name="engine") ProcessEngine engine; 则按名字查找,so找不到,报错。如果@Resource(name="processEngine") ProcessEngine engine; 则可以找到,遂赋值给engine变量。如果@Resource(type=ProcessEngine.class) ProcessEngine engine;则能查到,正常赋值。

3、@Autowired ProcessEngine engine; 就相当于是先按 @Resource(type=ProcessEngine.class) 查找,如果找到多个,则匹配其中beanId是engine的,如果匹配失败,则抛异常。

4、综上所述,建议用@Resource,可以减少spring匹配查询次数(个人理解哈)


不对的地方,欢迎大家指正

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值