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

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

 

1. Einführung

In diesem kurzen Tutorial lernen wir die Unterschiede zwischen den Anmerkungen von@Component, @Repository, @Serviceim Spring Framework kennen.

Weitere Lektüre:

Anleitung zu Spring @Autowired

Eine Anleitung zur häufigsten Verwendung von Springs @Autowired-Annotationen und -Qualifikatoren

Read more

Die Anmerkung zu Spring @Qualifier

@Autowired allein reicht manchmal nicht aus, um Abhängigkeiten zu unterscheiden. Mit der Anmerkung @Qualifier können Sie eine genauere Verbindung herstellen. @ Primary kann auch helfen.

Read more

2. Frühlings-Anmerkungen

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. Einfach ausgedrückt, um sie automatisch zu erkennen,Spring uses classpath scanning annotations.

Dann registriert es jede Bean inApplicationContext.

Hier 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 fungiert

Wir haben bereits einextended article zu diesen Anmerkungen. Daher konzentrieren wir uns nur auf die Unterschiede zwischen ihnen.

3. Was ist unterschiedlich?

The major difference between these stereotypes is they are used for different classification. 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. @Component

We can use @Component across the application to mark the beans as Spring’s managed components. Der Frühling nimmt nur Bohnen mit@Component  auf und registriert sie und sucht im Allgemeinen nicht nach@Service und@Repository.

Sie werden inApplicationContext registriert, weil sie selbst mit@Component versehen 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

@Repository’s job is to catch persistence specific exceptions and rethrow them as one of Spring’s unified unchecked exception.

Für diesen Frühling werdenPersistenceExceptionTranslationPostProcessor bereitgestellt, die in unserem Anwendungskontext hinzugefügt werden müssen:

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

3.3. @Service

We mark beans with @Service to indicate that it’s holding the business logic. Es gibt also keine andere Spezialität als die Verwendung in der Service-Schicht.

4. Fazit

In this write-up, we learned about the differences between  @Component, @Repository, @Service annotations. Wir haben jede Annotation einzeln mit ihren Einsatzgebieten untersucht.

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