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





