Heim >Java >JavaBase >Was sind die Unterschiede zwischen @autowired und @resource?

Was sind die Unterschiede zwischen @autowired und @resource?

青灯夜游
青灯夜游Original
2020-11-17 14:21:393701Durchsuche

Unterschiede: 1. @Autowired wird von Spring bereitgestellt, @Resource wird von J2EE bereitgestellt und erfordert JDK1.6 und höher. 2. @Autowired wird nur gemäß byType injiziert, @Resource wird standardmäßig automatisch gemäß byName injiziert. und Injektion nach byType ist ebenfalls vorgesehen.

Was sind die Unterschiede zwischen @autowired und @resource?

Verwandte Empfehlungen: „Java Video Tutorial

In Spring 3.X werden @Autowired und @Resource häufig für die Montage verwendet.

Ich frage mich: Was ist der Unterschied zwischen diesen beiden Anmerkungen? ? ?

Ähnliche Punkte:

@Resource entspricht @Autowired und kann in der Setter-Methode eines Felds oder Attributs markiert werden.

Unterschiede:

(1) Anbieter: @Autowired wird von org.springframework.beans.factory.annotation.Autowired bereitgestellt, mit anderen Worten, es wird von Spring bereitgestellt; @Resource wird von javax.annotation.Resource bereitgestellt , das von J2EE bereitgestellt wird und JDK1.6 und höher erfordert.

(2) Injektionsmethode: @Autowired injiziert nur nach byType; @Resource injiziert standardmäßig automatisch nach byName und stellt auch die Injektion nach byType bereit;

(3) Attribute: @Autowired fügt abhängige Objekte nach Typ und nach zusammen Standardmäßig sind Abhängigkeiten erforderlich. Das Objekt muss vorhanden sein. Wenn Nullwerte zulässig sind, können Sie die erforderliche Eigenschaft auf „false“ setzen. Wenn wir die Assembly nach Namen verwenden möchten, können wir sie in Verbindung mit der Annotation @Qualifier verwenden. @Resource hat zwei wichtige Attribute: Name und Typ. Wenn das Namensattribut nicht angegeben ist, wird beim Annotieren des Felds standardmäßig der Name des Felds als Bean-Name verwendet, um das abhängige Objekt zu finden Bei der Methode des Attributs wird der Attributname standardmäßig als Bean-Name verwendet. Es ist zu beachten, dass die @Resource-Annotation nach Typ auf die Assembly zurückgreift, wenn @Resource kein Namensattribut angibt und das abhängige Objekt nicht gemäß dem Standardnamen gefunden werden kann. Sobald jedoch das Namensattribut angegeben ist, kann es nur noch nach Namen zusammengestellt werden.

@Resource Assembly Sequence

 1. Wenn Name und Typ gleichzeitig angegeben werden, wird die einzige passende Bean aus dem Spring-Kontext für die Assembly 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 Kontext für die Assembly. Wenn keine Bean gefunden wird, wird eine Ausnahme ausgelöst. 3. Wenn der Typ angegeben ist, wird die einzige Bean mit dem passenden Typ angezeigt Wenn keine oder mehrere Beans aus dem Kontext gefunden werden, wird eine Ausnahme ausgelöst

 4. Wenn weder Name noch Typ angegeben sind, wird die Assemblierung automatisch gemäß dem byName durchgeführt Methode; wenn es keine Übereinstimmung gibt, wird für den Abgleich auf einen Originaltyp zurückgegriffen, und wenn er übereinstimmt, wird er automatisch zusammengestellt.

Es wird empfohlen, die Annotation @Resource für das Feld zu verwenden, damit keine Übereinstimmung vorliegt Darüber hinaus muss eine Setter-Methode geschrieben werden. Diese Annotation gehört zu J2EE, wodurch die Kopplung mit Spring verringert wird, sodass der Code eleganter aussieht.

Weitere Kenntnisse zum Thema Programmierung finden Sie auf:

Website zum Programmierenlernen

! !

Das obige ist der detaillierte Inhalt vonWas sind die Unterschiede zwischen @autowired und @resource?. 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
Vorheriger Artikel:Was ist Java-Middleware?Nächster Artikel:Was ist Java-Middleware?