Au printemps pré-3.0 n'a pas d'importance.
Au printemps 3.0 il y a le support pour la norme (JSR 330) annotation @javax.inject.Inject
- utiliser, avec une combinaison de @Qualifier
. Notez que le printemps prend également en charge l' @javax.inject.Qualifier
méta-annotation:
@Qualifier
@Retention(RUNTIME)
public @interface YourQualifier {}
De sorte que vous pouvez avoir
<bean class="com.pkg.SomeBean">
<qualifier type="YourQualifier"/>
</bean>
ou
@YourQualifier
@Component
public class SomeBean implements Foo { .. }
Et puis:
@Inject @YourQualifier private Foo foo;
Cela fait moins d'utiliser des Cordes-les noms, qui peuvent être mal orthographié et sont plus difficile à maintenir.
Comme pour la question de départ: à la fois, sans spécifier les attributs de l'annotation, effectuer l'injection par type. La différence est:
-
@Resource
vous permet de spécifier un nom de bean injecté
-
@Autowired
vous permet de marquer comme non-obligatoire.