@Component vs @Repository und @Service im Frühjahr

1. Einleitung

In diesem kurzen Tutorial lernen wir die Unterschiede zwischen den Annotationen @Component, @Repository und @Service im Spring Framework kennen.

2. Frühlingsanmerkungen

In den meisten typischen Anwendungen haben wir unterschiedliche Ebenen wie Datenzugriff, Präsentation, Service, Geschäft usw.

Und in jeder Schicht haben wir verschiedene Bohnen. Um sie automatisch zu erkennen, verwendet Spring einfach Anmerkungen zum Scannen von Klassenpfaden .

Anschließend wird jede Bean im ApplicationContext registriert .

Hier ist ein kurzer Überblick über einige dieser Anmerkungen:

  • @Component ist ein generisches Stereotyp für jede von Spring verwaltete Komponente
  • @Service kommentiert Klassen auf der Serviceebene
  • @Repository kommentiert Klassen auf der Persistenzschicht, die als Datenbank-Repository fungieren

Wir haben bereits einen erweiterten Artikel über diese Anmerkungen. Wir werden uns also nur auf die Unterschiede zwischen ihnen konzentrieren.

3. Was ist anders?

Der Hauptunterschied zwischen diesen Stereotypen besteht darin, dass sie für unterschiedliche Klassifizierungen verwendet werden. Wenn wir eine Klasse zur automatischen Erkennung mit Anmerkungen versehen, sollten wir das entsprechende Stereotyp verwenden.

Lassen Sie uns sie nun genauer durchgehen.

3.1. @Komponente

Wir können @Component in der gesamten Anwendung verwenden, um die Beans als verwaltete Komponenten von Spring zu markieren . Frühling nur abholen und Register Bohnen mit @Component und sucht nicht nach @Service und @Repository im Allgemeinen.

Sie sind in ApplicationContext registriert, da sie selbst mit @Component kommentiert sind :

@Component public @interface Service { } 
@Component public @interface Repository { } 

@Service und @Repository sind Sonderfälle von @Component . Sie sind technisch gleich, aber wir verwenden sie für die verschiedenen Zwecke.

3.2. @Repository

Die Aufgabe von @Repository besteht darin, persistenzspezifische Ausnahmen abzufangen und sie als eine der einheitlichen ungeprüften Ausnahmen von Spring erneut auszulösen .

Für diesen Frühling wird PersistenceExceptionTranslationPostProcessor bereitgestellt , der in unserem Anwendungskontext hinzugefügt werden muss:

Dieser Bean- Postprozessor fügt jedem Bean, der mit @Repository kommentiert ist, einen Advisor hinzu.

3.3. @Bedienung

Wir markieren Beans mit @Service, um anzuzeigen, dass sie die Geschäftslogik enthalten . Es gibt also keine andere Spezialität als die Verwendung in der Service-Schicht.

4. Fazit

In dieser Zuschreibung, haben wir gelernt , über die Unterschiede zwischen @Component, @Repository, @Service Anmerkungen . Wir haben jede Anmerkung separat mit den Bereichen ihrer Verwendung untersucht.

Abschließend ist es immer eine gute Idee, die Annotation basierend auf ihren Ebenenkonventionen auszuwählen.