Which annotation, @Resource (jsr250) or @Autowired (Spring-specific) should I use in DI?
I have successfully used both in the past, @Resource(name="blah") and @Autowired @Qualifier("blah")
My instinct is to stick with the @Resource tag since it’s been ratified by the jsr people.
Anyone has strong thoughts on this?
In spring pre-3.0 it doesn’t matter which one.
In spring 3.0 there’s support for the standard (JSR-330) annotation
@javax.inject.Inject– use it, with a combination of@Qualifier. Note that spring now also supports the@javax.inject.Qualifiermeta-annotation:So you can have
or
And then:
This makes less use of String-names, which can be misspelled and are harder to maintain.
As for the original question: both, without specifying any attributes of the annotation, perform injection by type. The difference is:
@Resourceallows you to specify a name of the injected bean@Autowiredallows you to mark it as non-mandatory.