java – @Qualifier和@Resource之间的区别

我没有看到两种方式有任何区别,@Qualifier始终与@Autowired一起使用。

@Autowired
@Qualifier("alpha")

VS

@Resource(name="alpha")

有人可以让我知道这个区别吗?谢谢!

最佳答案
@Autowired可以单独使用。如果单独使用,将按类型进行连接。因此,如果在容器中声明了同一类型的多个bean,则会出现问题,因为@Autowired不知道要使用哪个bean来注入。因此,将@Qualifier与@Autowired一起使用,以通过指定bean名称(按名称连线)来澄清实际连接的bean。

@Resource也通过名称连线。所以如果@Autowired与@Qualifier一起使用,它与@Resource相同。

区别是@Autowired和@Qualifier是弹簧注释,而@Resource是标准的java注释(来自JSR-250)。此外,@Resource只支持字段和setter注入,而@Autowired支持字段,setter,constructor和多参数方法注入。

建议使用@Resource进行字段和设置器注入。坚持使用@Qualifier和@Autowired作为构造函数或多参数方法注入。

this

If you intend to express annotation-driven injection by name, do not
primarily use @Autowired – even if is technically capable of referring
to a bean name through @Qualifier values. Instead, prefer the JSR-250
@Resource annotation which is semantically defined to identify a
specific target component by its unique name, with the declared type
being irrelevant for the matching process.

转载注明原文:java – @Qualifier和@Resource之间的区别 - 代码日志