Dieser Artikel ist ein Spiegelartikel der maschinellen Übersetzung, bitte klicken Sie hier, um zum Originalartikel zu springen.

Ansehen: 12335|Antwort: 0

[JavaEE] Unterschied zwischen Spring @Bean und @Service Annotationen

[Link kopieren]
Veröffentlicht am 30.08.2018 13:29:41 | | |
Heute habe ich mit meinen Kollegen besprochen, ob ich eine Kombination aus @Configuration und @Bean verwenden soll, um Bohnen in Spring Boot herzustellen, oder ob man @Service und andere Anmerkungen direkt im Kurs verwenden soll. Der Autor verwendet meist das erste, also eine Kombination aus @Configuration und @Bean.

Schauen wir uns zuerst ein Beispiel an: Das Ziel ist es, eine Bohne für den SearchService zu erstellen.

Verwenden Sie @Service direkt:




Starte die Anwendung, Browserzugriff: http://localhost:8081/search?q=koly, Seitenanzeige: ["hello", "koly"]

Möglichkeiten, @Configuration und @Bean zu verwenden:






Im Vergleich zur direkten Nutzung @Service Code gibt es eine AppConfig-Klasse, die die @Service Anmerkungen entfernt, die über ElasticSearchServiceImpl gelegt wurden. Auf den ersten Blick gibt es mehr Code und Klassen. Was sind also die Vorteile der Nutzung letzterer?

Der Autor ist der Ansicht, dass die Vorteile sind:

Trennung der Anliegen

Mit @Configuration und @Bean Methoden findet die Herstellung der Bohnen an einem Ort statt, und die Oberfläche sowie deren Umsetzung haben nichts mit der Herstellung der Bohne zu tun.

Wenn die Erstellung des Beans geändert werden muss, musst du nur die entsprechende Konfigurationsklasse ansehen und ändern, und du musst nicht zur entsprechenden Java-Bean gehen, um Änderungen vorzunehmen. Zum Beispiel muss die Bohnenerstellung manchmal mit @Scope oder @Profile kooperiert werden, und man muss nur die Konfigurationsklasse modifizieren.

Einzelaufgabe

@service Annotation selbst übernimmt zwei Aufgaben:

Einer davon ist die Herstellung von Bohnen;
Die zweite ist, eine Klasse als Service zu identifizieren.
Gibt an, dass eine annotierte Klasse ein "Service" ist, ursprünglich definiert von Domain-Driven

Design (Evans, 2003) als "eine Operation, die als Schnittstelle angeboten wird, die im Modell eigenständig steht, ohne kapsulierten Zustand."

Oben ist Springs Erklärung zu @Service Anmerkungen. Dieses is@Service stellt tatsächlich eine staatenlose, unabhängige Schnittstellenoperation in DDD dar.

Im Sinne von @Bean und @Configuration Zusammenarbeit wird die Herstellung von Bohnen an eine separate Klasse übergeben, und die Identität von Service wird an das Interface und den Klassennamen in Java übertragen. Dies spiegelt sich auch in Spring Data wider, wie Repository, das mit Namen identifiziert wird, wie CrudRepository. Daher spiegelt sich auch der Name Service wider. Spezifische Hierarchiedefinitionen können verwendet werden, um mehr Schichten entsprechend dem Projekt nach Namen bereitzustellen, ohne sich auf die von Spring bereitgestellten Anmerkungen wie Mapper-Schicht, Validator-Schicht usw. zu verlassen.

Außerdem sind Bohne und Service zweidimensionale Konzepte. Einer über die konkrete Umsetzung und der andere über die Konzepte in DDD.

Flexibler

Mit @Bean Methoden kannst du Instanzen von Klassen in der Bibliothek erstellen. Wenn du die @Service-Methode verwendest, kannst du @Service Kommentare nicht zu den entsprechenden Klassen in der Bibliothek hinzufügen.

Wenig Wissen

Das Prinzip des Mindestwissens bedeutet:

Je weniger Technologie oder Wissen zur Erfüllung der Funktion benötigt wird, desto besser, um die Einfachheit des Projekts zu gewährleisten und die Lernschwierigkeit zu verringern.

Da es nicht möglich ist, Instanzen von Klassen in der Klassenbibliothek mit @Service zu erstellen, muss man bei ähnlichen Anforderungen die Form von @Configuration und @Bean verwenden. An diesem Punkt gibt es Anmerkungen wie @Service, @Configuration und @Bean im gesamten Projekt, und diese Anmerkungen bewirken dasselbe, nämlich die Bohne zu erschaffen.

Bei @Service besteht eine hohe Wahrscheinlichkeit, dass @Service, @Component, @Configuration und @Bean gleichzeitig auftreten.

Während die Verwendung von @Configuration und @Bean die Verwendung von @Service und @Component vollständig eliminieren kann, was dem Prinzip des Mindestwissens entspricht.

Übrigens wurden Spring Beans in XML erstellt und später Java für die Konfiguration verwendet. Der Hauptgrund für die Verweigerung von XML ist, dass es nicht prägnant genug ist und keine Funktionen wie Compile-Time-Checking bietet, anstatt die Notwendigkeit, die Erstellung von Bohnen auf Klassen zu verteilen.

Zusammenfassend bevorzugt der Autor @Configuration und @Bean Methoden.




Vorhergehend:Eine einfache Möglichkeit, den Bildschirm aus der Python-Kommandozeile zu löschen
Nächster:Verschiedene Möglichkeiten, verteilte Schlösser zu nutzen (Redis, Zookeeper, Datenbank)
Verzichtserklärung:
Alle von Code Farmer Network veröffentlichten Software, Programmiermaterialien oder Artikel dienen ausschließlich Lern- und Forschungszwecken; Die oben genannten Inhalte dürfen nicht für kommerzielle oder illegale Zwecke verwendet werden, andernfalls tragen die Nutzer alle Konsequenzen. Die Informationen auf dieser Seite stammen aus dem Internet, und Urheberrechtsstreitigkeiten haben nichts mit dieser Seite zu tun. Sie müssen die oben genannten Inhalte innerhalb von 24 Stunden nach dem Download vollständig von Ihrem Computer löschen. Wenn Ihnen das Programm gefällt, unterstützen Sie bitte echte Software, kaufen Sie die Registrierung und erhalten Sie bessere echte Dienstleistungen. Falls es eine Verletzung gibt, kontaktieren Sie uns bitte per E-Mail.

Mail To:help@itsvse.com