我没有看到两种方式有任何区别,@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 - @Resource UserTransaction和EntityManager.getTransaction()之间的区别是什么,
- java - =和=之间的区别
- java - StringBuilder和StringBuffer之间的区别
- java - 在Restlet中,Restlet类和Resource类之间有什么区别?
- jpa - “jta-datasource”和“resource-local”数据源之间的区别?
- C中的限定符和修饰符之间有什么区别?
- angularjs - 延迟对象承诺和$resource服务的承诺之间的区别是什么
- 注释 - @EJB和@Resource之间有什么区别?在EJB中的依赖注入
转载注明原文:java – @Qualifier和@Resource之间的区别 - 代码日志