Die Rolle und Verwendung der @Repository-Annotation und der Unterschied zu @Mapper

1. Die Rolle von @Repository

@Repository ist eine Annotation von Spring. Es wird verwendet, um die Klasse der Zugriffsschicht (Dao-Schicht) zu kennzeichnen, die ein Lager darstellt und hauptsächlich zur Kapselung des Zugriffs auf die Datenbank verwendet wird. Seine Implementierung ist dieselbe wie die @Component-Annotation, dient jedoch nur der Verdeutlichung der Rolle der Klasse.
Das heißt, @Repository ist eine Ableitung der @Component-Annotation, und sowohl @Service als auch @Controller können als Erweiterungen der @Component-Annotation verstanden werden. Ihre Funktion besteht darin, Beans für die Klasse zu instanziieren und die Implementierungsklasse des aktuellen Klassenobjekts zur Verwaltung an den Spring-Container zu übergeben.

Mit anderen Worten, welche Klasse durch die @Repository-Annotation geändert wird, gibt an, dass diese Klasse die Funktion einer Datenbank-CRUD hat und auf der Schnittstelle der Persistenzschicht verwendet wird.

Darüber hinaus kann er als Spring-Annotation auch die in der markierten Klasse ausgelöste Datenzugriffsausnahme als Spring-Datenzugriffsausnahmetyp kapseln .
Fügen Sie hier eine Bildbeschreibung ein

2. Was ist der Unterschied zwischen @Repository und @Service und @Component?

Die Rolle von @Repository ist wie oben erwähnt.
Die Annotation @Service wird verwendet, um Klassen in der Serviceschicht für die Verarbeitung der Geschäftslogik zu markieren. In Klassen, die mit der Annotation @Service gekennzeichnet sind, werden normalerweise @Repository-Klassen eingefügt.
Die @Component-Annotation ist eine allgemeine Annotation, mit der alle vom Spring-Container verwalteten Komponenten markiert werden. In Klassen, die mit der Annotation @Component gekennzeichnet sind, werden normalerweise Klassen eingefügt, die mit @Service und @Repository gekennzeichnet sind.
Im Wesentlichen werden die instanziierten Objekte an die Federverwaltung übergeben.

3. Ähnlichkeiten und Unterschiede zwischen @Repository und @Mapper

@Mapper ist eine Anmerkung von mybatis. Im Programm muss mybatis den entsprechenden Mapper finden, zur Kompilierungszeit dynamisch Proxy-Klassen generieren und die Datenbankabfragefunktion realisieren.
@Mapper- und @Repository-Annotationen werden auf die gleiche Weise verwendet und fügen der Schnittstelle der Persistenzschicht Anmerkungen hinzu.
Wenn Sie jedoch nur die Annotation @Mapper allein verwenden und die automatische Assemblierung in der Idee durchführen, wird eine Warnung angezeigt, die darauf hinweist, dass die Bean nicht gefunden werden kann. Dies hat jedoch keinen Einfluss auf den Programmablauf und kann direkt ignoriert werden. Wenn Sie diese Warnung vermeiden möchten, können Sie sie in den Ideeneinstellungen ignorieren oder gleichzeitig die @Repository-Annotation
verwenden, wenn @Mapper verwendet wird.
Auf diese Weise scannt Spring @Repository und erkennt diese Bean, und diese Warnung wird nicht angezeigt.

Für den normalen Gebrauch verwenden wir meistens @Mapper anstelle von @Repository-Annotationen.
Anstatt die Annotation @Repository zu verwenden, gibt es drei Hauptmethoden, um die Implementierungsklasse dieser Schnittstelle einzufügen:
1. Konfigurieren Sie in der Spring-Konfigurationsdatei die Bean MapperScannerConfigure, die die Schnittstelle der Persistenzschicht scannt, um eine Implementierungsklasse zu erstellen und diese zu übergeben über den Frühling für das Management.
2. Die Schnittstelle wird mit @Mapper annotiert.
3. Die Annotation @MapperScan wird in der Startklasse von Springboot verwendet, die dieselbe Funktion wie MapperScannerConfigure hat.

4. Korrekte Verwendung von @Repository allein

Die @Repository-Annotation ist eine Annotation, die zum Markieren der Komponenten der Datenzugriffsschicht verwendet wird, die von Spring gescannt und in den IOC-Container eingefügt werden. Auch ohne Verwendung der @MapperScan-Annotation oder des MapperScannerConfigurer kann sie wirksam werden, solange die durch die @Repository-Annotation markierte Komponente mit der Mapper-Schnittstellenimplementierung von Mybatis identisch ist.

Allerdings kann es bei der Verwendung der @Repository-Annotation in mybatis zu Problemen kommen. Wenn Sie die Annotation @Repository verwenden, behandelt Spring sie als Spring-Komponente, dh erstellt ein Proxy-Objekt für diese Klasse und verwaltet es im IOC-Container. Allerdings handelt es sich bei der Implementierung der Mapper-Schnittstelle in Mybatis nicht um eine Spring-Komponente, sondern um von Mybatis erstellte Proxy-Objekte. Die Verwendung der @Repository-Annotation kann dazu führen, dass das von mybatis erstellte Proxy-Objekt bis zum Frühjahr neu erstellt wird, was zu Problemen führt.

Daher wird empfohlen, die @MapperScan-Annotation oder den MapperScannerConfigurer in mybatis zu verwenden, um Mapper-Schnittstellenimplementierungen zu scannen und sie in den ioc-Container einzufügen, anstatt die @Repository-Annotation zu verwenden.

5. Zusammenfassung:

1. @Repository ist eine Annotation von Spring und @Mapper ist eine Annotation von Mybatis.
2. Sowohl @Repository als auch @Mapper können verwendet werden, beide können gleichzeitig erscheinen oder einzeln verwendet werden.
3. Um @Repository allein zu verwenden, müssen Sie die Annotationen MapperScannerConfigurer oder @MapperScan zusammen verwenden.
4. Wenn @Mapper allein verwendet wird, wird möglicherweise eine Warnung im Editor angezeigt, die sich jedoch nicht auf die Ausführung des Programms auswirkt. Kann in Verbindung mit @Repository verwendet werden, um Warnungen zu beseitigen. (Es kann auch eingestellt werden, dass diese Warnung im Editor ignoriert wird)

Je suppose que tu aimes

Origine blog.csdn.net/fengling_smile/article/details/129853866
conseillé
Classement