这篇文章将为大家详细讲解有关@Resource和@Autowired的区别是什么,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。
创新互联坚持“要么做到,要么别承诺”的工作理念,服务领域包括:成都网站设计、网站建设、外贸网站建设、企业官网、英文网站、手机端网站、网站推广等服务,满足客户于互联网时代的凌海网站设计、移动媒体设计的需求,帮助企业找到有效的互联网解决方案。努力成为您成熟可靠的网络建设合作伙伴!
模式 | 说明 |
---|---|
no | 默认值,未激活 Autowiring,需要手动执行依赖注入对象 |
byName | 根据被注入属性的名称作为Bean名称进行依赖查找,并将对象设置到该属性 |
byType | 根据被注入属性的类型作为依赖类型进行查找,并将对象设置到该属性 |
constructor | 特殊的byType类型,用户构造器参数 |
@Autowired是Spring中的注解,@Resource是JSR-250中提供的注解,即Java提供的注解,从包名就可以看出来
Autowired:org.springframework.beans.factory.annotation.Autowired Resource:javax.annotation.Resource
@Autowired的依赖注入过程是由AutowiredAnnotationBeanPostProcessor支持的
具体的注入逻辑在DefaultListableBeanFactory#doResolveDependency
@Autowired的注入逻辑如下
@Resource的依赖注入过程是由CommonAnnotationBeanPostProcessor支持的
具体的注入逻辑在CommonAnnotationBeanPostProcessor#autowireResource
@Resource的注入逻辑如下
「注意:@Resource按照类型查找的逻辑和@Autowired的一样,因为都是调用了DefaultListableBeanFactory#doResolveDependency方法」
@Autowired:先byType再byName
@Resource:先byName再byType(当指定@Resource name属性时,只会byName)
关于@Resource和@Autowired的区别是什么就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。