|
|
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öschenNächster:Verschiedene Möglichkeiten, verteilte Schlösser zu nutzen (Redis, Zookeeper, Datenbank)
|