java – @Resource vs @Autowired

使用DI时,我应该使用哪个注释,@Resource(jsr250)或@Autowired(Spring特定)?

我已经成功地使用了过去,@Resource(name =“blah”)和@Autowired @Qualifier(“blah”)

我的直觉是坚持使用@Resource标签,因为它已经被jsr人批准。任何人都有强烈的想法?

在3.0之前的春天,无论哪一个。

在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允许您将其标记为非强制。

http://stackoverflow.com/questions/4093504/resource-vs-autowired

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:java – @Resource vs @Autowired