Maison  >  Article  >  Java  >  Quelles sont les différences entre @autowired et @resource ?

Quelles sont les différences entre @autowired et @resource ?

青灯夜游
青灯夜游original
2020-11-17 14:21:393590parcourir

Différences : 1. @Autowired est fourni par Spring, @Resource est fourni par J2EE, nécessitant JDK1.6 et supérieur 2. @Autowired est uniquement injecté en fonction de byType, @Resource est automatiquement injecté par byName par ; par défaut, et est également fourni Inject selon byType.

Quelles sont les différences entre @autowired et @resource ?

Recommandations associées : "Tutoriel vidéo Java"

est souvent utilisé dans Spring 3.X @ Autowired et @Resource pour l’assemblage.

Je ne peux m'empêcher de me demander quelle est la différence entre ces deux annotations ? ? ?

Mêmes points :

@Resource est équivalent à @Autowired, et peut être marqué sur la méthode setter d'un champ ou d'un attribut.

Différences :

(1) Fournisseur : @Autowired est fourni par org.springframework.beans.factory.annotation.Autowired, autrement dit il est fourni par Spring Fourni ; @Resource est fourni par javax.annotation.Resource, qui est fourni par J2EE et nécessite JDK 1.6 et supérieur.

(2) Méthode d'injection : @Autowired injecte uniquement selon byType ; @Resource injecte automatiquement par byName par défaut, et fournit également une injection selon byType

(3) Attributs : @Autowired ; assemble les dépendances par type d'objet, par défaut il nécessite que l'objet dépendant existe. Si les valeurs nulles sont autorisées, vous pouvez définir son attribut obligatoire sur false. Si nous voulons utiliser l'assembly par son nom, nous pouvons l'utiliser en conjonction avec l'annotation @Qualifier. @Resource a deux attributs importants : le nom et le type. L'attribut name spécifie byName. Si l'attribut name n'est pas spécifié, lorsque l'annotation est annotée sur le champ, le nom du champ est utilisé par défaut comme nom du bean pour rechercher l'objet dépendant. Lorsque l'annotation est annotée sur le setter. méthode de l'attribut, le nom de l'attribut est utilisé comme nom du bean par défaut. Objets dépendants. Il convient de noter que si @Resource ne spécifie pas d'attribut de nom et que l'objet dépendant ne peut pas être trouvé selon le nom par défaut, l'annotation @Resource reviendra à l'assembly par type. Mais une fois l’attribut name spécifié, il ne peut être assemblé que par nom.

@Resource Assembly Sequence

 1. Si le nom et le type sont spécifiés en même temps, le seul bean correspondant sera trouvé dans le contexte Spring pour l'assemblage If. il n'est pas trouvé, lancez une exception

2. Si le nom est spécifié, le bean correspondant au nom (id) sera recherché dans le contexte pour l'assemblage. Si aucun bean n'est trouvé, une exception sera levée

3. Si le type est spécifié, recherchez ensuite le seul bean avec le type correspondant dans le contexte pour l'assemblage. Si aucun bean n'est trouvé ou si plusieurs sont trouvés, une exception sera levée

4. Si aucun des deux n'est trouvé. name ni type n'est spécifié, la méthode byName sera automatiquement utilisée ; s'il n'y a pas de correspondance, elle reviendra à un type primitif pour la correspondance, et si elle correspond, elle sera automatiquement assemblée

Il est recommandé d'utiliser l'annotation @Resource sur le champ, afin qu'il n'y ait pas besoin d'écrire une méthode setter. Et cette annotation appartenant à J2EE réduit le couplage avec Spring, donc le code semble plus élégant.

Pour plus de connaissances liées à la programmation, veuillez visiter :

Site Web d'apprentissage en programmation ! !

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Article précédent:Que sont les middlewares JavaArticle suivant:Que sont les middlewares Java