Heim  >  Artikel  >  Java  >  Was ist der Unterschied zwischen @autowired- und @resource-Annotationen?

Was ist der Unterschied zwischen @autowired- und @resource-Annotationen?

青灯夜游
青灯夜游Original
2020-11-09 10:35:1587427Durchsuche

Unterschiede: 1. Die Annotation @Autowired wird von Spring bereitgestellt und nur gemäß byType eingefügt. Die Annotation @resource wird von J2EE bereitgestellt und standardmäßig automatisch von byName eingefügt. 2. @Autowired wird standardmäßig nach Typ zusammengestellt, und @Resource wird standardmäßig nach Name zusammengestellt.

Was ist der Unterschied zwischen @autowired- und @resource-Annotationen?

Verwandte Empfehlungen: „Java Video Tutorial

Spring unterstützt nicht nur seine eigenen @Autowired-Anmerkungen, sondern auch mehrere in der JSR-250-Spezifikation definierte Anmerkungen. Beispiel: @Resource, @PostConstruct und @PreDestroy

1, @Autowired

werden von Spring bereitgestellt und nur gemäß byType

2 injiziert, @Resource

werden von J2EE bereitgestellt und sind es standardmäßig automatisch von byName eingefügt

@ Die Ressource hat zwei wichtige Attribute: Name und Typ

Spring analysiert das Namensattribut der @Resource-Annotation in den Namen der Bean und das Typattribut in den Typ der Bean. Wenn Sie also das Namensattribut verwenden, wird die automatische Injektionsstrategie byName verwendet, und wenn das Typattribut verwendet wird, wird die automatische Injektionsstrategie byType verwendet. Wenn weder das Namens- noch das Typattribut angegeben sind, wird die automatische Injektionsstrategie byName über den Reflexionsmechanismus verwendet.

@Ressourcenassembly-Reihenfolge:

(1) Wenn Name und Typ gleichzeitig angegeben werden, wird die einzige passende Bean aus dem Spring-Kontext für die Assemblierung gefunden. Wenn sie nicht gefunden wird, wird eine Ausnahme ausgelöst

(2 ) Wenn der Name angegeben ist, suchen Sie die Bean mit dem passenden Namen (ID) aus dem Spring-Kontext für die Assembly. Wenn sie nicht gefunden wird, wird eine Ausnahme ausgelöst. (3) Wenn der Typ angegeben ist, wird dies nur die Bean mit dem passenden Typ sein Wenn es nicht gefunden wird, wird eine Ausnahme ausgelöst. Wenn mehr als eine Ausnahme gefunden wird, wird eine Ausnahme ausgelöst.

automatisch in der byName-Methode durchgeführt. Wenn es keine Übereinstimmung gibt, wird für die Übereinstimmung auf einen primitiven Typ zurückgegriffen und bei einer Übereinstimmung automatisch verdrahtet.

Die Funktion von @Resource entspricht @Autowired, außer dass @Autowired automatisch entsprechend byType eingefügt wird.

3. Nutzungsunterschiede

(1) Sowohl @Autowired als auch @Resource können zum Zusammenstellen von Bohnen verwendet werden, und beide können auf

Felder

oder Setter-Methoden geschrieben werden (2)@Autowired wird zusammengebaut standardmäßig nach Typ

, standardmäßig muss das abhängige Objekt vorhanden sein. Wenn Sie

Nullwerte zulassen möchten , können Sie sein erforderliches Attribut auf false setzen. Wenn Sie die Namensassemblierung verwenden möchten, können Sie sie in Verbindung mit der @Qualifier-Annotation verwenden. (3) @Ressource

,

wird standardmäßig nach dem Namen zusammengestellt. Der Name kann über das Name-Attribut angegeben werden, wenn die Anmerkung in das -Feld geschrieben wird , übernimmt standardmäßig den Feldnamen. Führen Sie eine Namenssuche durch. Wenn die Annotation in die Setter-Methode geschrieben wird, wird der Attributname standardmäßig für die Assemblierung verwendet. Wenn keine Bohne findet, die dem Namen entspricht, wird entsprechend der Sorte zusammengestellt . Es ist jedoch zu beachten, dass bei Angabe des Namensattributs dieser nur nach dem Namen zusammengesetzt wird. Es wird empfohlen, die Annotation @Resource für das Feld zu verwenden, sodass keine Setter-Methode geschrieben werden muss. Diese Annotation gehört zu J2EE, wodurch die Kopplung mit Spring verringert wird.

@Ressourcenannotation

Was ist der Unterschied zwischen @autowired- und @resource-Annotationen?Weitere Kenntnisse zum Thema Programmierung finden Sie unter:
Programmierunterricht

! !

Das obige ist der detaillierte Inhalt vonWas ist der Unterschied zwischen @autowired- und @resource-Annotationen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn