Java@Resource vs @Autowired
我应该在DI中使用哪个批注@Resource(jsr250)
或@Autowired
(特定于Spring
)?
我已经成功地在过去使用两种,@Resource(name="blah")
和@Autowired @Qualifier("blah")
我的直觉是坚持使用该@Resource
标签,因为它已被jsr
人士批准。
有人对此有强烈的想法吗?
回答:
在3.0之前的spring中,哪一个都不重要。
在Spring 3.0中,支持标准(JSR-330)注释@javax.inject.Inject-
将其与结合使用@Qualifier
。请注意,spring
现在还支持@javax.inject.Qualifier
元注释:
@Qualifier@Retention(RUNTIME)
public @interface YourQualifier {}
所以你可以有
<bean class="com.pkg.SomeBean"> <qualifier type="YourQualifier"/>
</bean>
要么
@YourQualifier@Component
public class SomeBean implements Foo { .. }
接着:
@Inject @YourQualifier private Foo foo;
这样就减少了字符串名称的使用,因为字符串名称可能会拼写错误并且难以维护。
至于原始问题:两者都未指定注释的任何属性,而是按类型执行注入。区别在于:
@Resource
允许你指定注入的bean的名称@Autowired
允许你将其标记为非强制性。
以上是 Java@Resource vs @Autowired 的全部内容, 来源链接: utcz.com/qa/422256.html