java - @Resource作用
大家讲道理
大家讲道理 2017-04-18 09:38:48
0
5
606
@Resource
public interface MyObjectMapperExt extends MyObjectMapper {

 // TODO 
}

为什么在这个地方不加@Resource的时候,在另外一个地方注入MyObjectMapperExt会失败?

@Autowired
private MyObjectMapperExt myObjectMapperExt;

会注入失败,提示无法注入。是什么原因?而且@Resource是mybatis自动生成的。

大家讲道理
大家讲道理

光阴似箭催人老,日月如移越少年。

répondre à tous(5)
阿神
/**
 * The Resource annotation marks a resource that is needed
 * by the application.  This annotation may be applied to an
 * application component class, or to fields or methods of the
 * component class.  When the annotation is applied to a
 * field or method, the container will inject an instance
 * of the requested resource into the application component
 * when the component is initialized.  If the annotation is
 * applied to the component class, the annotation declares a
 * resource that the application will look up at runtime. <p>
 *
 * Even though this annotation is not marked Inherited, deployment
 * tools are required to examine all superclasses of any component
 * class to discover all uses of this annotation in all superclasses.
 * All such annotation instances specify resources that are needed
 * by the application component.  Note that this annotation may
 * appear on private fields and methods of superclasses; the container
 * is required to perform injection in these cases as well.
 *
 * @since Common Annotations 1.0
 */
@Target({TYPE, FIELD, METHOD})
@Retention(RUNTIME)

Ceci est une introduction à l'annotation @Resource Lorsque @Resource est utilisé sur un champ ou une méthode, Spring recherchera le type de bean requis dans le conteneur. Lorsque @Resource est utilisé sur une classe, Spring. le mettra dans le conteneur Spring en tant que ressource.

L'annotation

@Autowired signifie laisser le conteneur Spring injecter automatiquement ce bean. @Resource signifie transmettre la classe actuellement annotée au conteneur Spring pour la gestion. Si vous n'utilisez pas l'annotation @Resource, le Spring. Le conteneur ne chargera pas ce type de bean Lorsqu'une injection est nécessaire, une erreur sera naturellement signalée

.

Il y a un problème avec l'utilisation de @Resource sur l'interface. Il doit être placé sur la classe d'implémentation

.
刘奇

Unifié et remis à la direction du printemps

左手右手慢动作

Si la première interface n'ajoute pas @Resource, l'implémentation de l'interface ne sera pas gérée d'ici Spring, donc les injections suivantes faisant référence à l'interface échoueront

伊谢尔伦

Déclaration d'annotation @Resource, vous n'avez pas déclaré que le bean est introuvable en utilisant @Autowired
Cela peut être simplement compris de cette façon, un pool de ressources appelé spring, vous devez utiliser @Resource @Controller et d'autres méthodes pour faites des déclarations dans le pool. Mettez-le simplement dedans
Utilisez @Autowired @Named et d'autres méthodes pour le supprimer

Ty80

@Resource
signifie que le bean est géré par le conteneur Spring. Généralement, la ressource est écrite sur la classe d'implémentation de la classe ou de l'interface, plutôt que directement sur l'interface. Laisser Spring Container gérer cela signifie que lorsque vous souhaitez instancier la classe, Spring créera automatiquement l'objet pour vous.

@Autowired
indique que l'attribut (généralement écrit sur l'attribut ou la méthode set) est automatiquement injecté au printemps. Seulement si la ressource existe dans le conteneur Spring (le bean avec la ressource ajoutée est traité comme une ressource), Spring peut l'injecter automatiquement pour vous. S'il n'y a pas de ressource de ce type dans le conteneur Spring, si vous l'injectez automatiquement, vous ne pourrez certainement pas trouver la ressource et signaler une erreur.

Exemples appropriés et inappropriés
Il y a un registre de colis (Spring containers) à la gare, et vous souhaitez stocker votre colis dans le conteneur. Vous mettez une balise @Resource sur le package et le personnel vous remettra une petite note indiquant que la ressource vous appartient. Lorsque vous souhaitez récupérer le package (obtenir la ressource), vous pouvez prendre la bande (@Autowired) pour trouver la ressource dans le registre du package.
Si votre sac est effectivement stocké dans le conteneur, alors le sac vous sera remis selon votre note.
Si vous n'avez pas déposé le sac dans le conteneur et que vous souhaitez quand même demander un sac au personnel, alors signalez une erreur. Vous démarrez un duel avec le staff. . . . . . . . . . . . . .
Le printemps est très droit. Si vous l'avez, je vous le donnerai. Si vous ne l'avez pas, vous ne l'aurez pas. Si vous n'avez pas de ressources, vous pouvez me le demander à nouveau. . Je vous signalerai l'erreur ! ! !
PS : Les exemples donnés prêtent à confusion, veuillez les comprendre vous-même.

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal