@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

回到顶部