@Qualifier和@Resource之间的区别
我看不到两种方式之间的任何区别,@ Qualifier 始终与 @Autowired一起使用 。
@Autowired@Qualifier("alpha")
VS
@Resource(name="alpha")
有人能让我知道其中的区别吗?谢谢!
回答:
@Autowired
可以单独使用。如果单独使用,将按类型进行接线。因此,如果在容器中声明了多个相同类型的bean,而@Autowired
又不知道要注入哪个bean,就会出现问题。结果,通过指定Bean名称(按名称进行绑定),@Qualifier
与一起使用@Autowired
来阐明要实际连接的Bean
@Resource
也按名称接线。因此,如果@Autowired
与一起使用@Qualifier
,则与相同@Resource
。
区别在于@Autowired
和@Qualifier
是spring注释,@Resource
而是标准java注释(来自JSR-250)。此外,@Resource
仅支持字段和setter注入,而 @Autowired
支持字段,setter,构造函数和多参数方法注入。
建议@Resource
用于田间和二传手注射。坚持使用@Qualifier
和@Autowired
进行构造函数或多参数方法注入。
看到这个:
如果您打算通过名称表示注释驱动的注入,则不要主要使用@Autowired-
即使在技术上能够通过@Qualifier值引用bean名称。相反,最好使用JSR-250
@Resource批注,该批注的语义定义是通过其唯一名称来标识特定的目标组件,而声明的类型与匹配过程无关。
以上是 @Qualifier和@Resource之间的区别 的全部内容, 来源链接: utcz.com/qa/433448.html