|
|
Δημοσιεύτηκε στις 30/8/2018 1:29:41 μ.μ.
|
|
|

Σήμερα συζήτησα με τους συναδέλφους μου εάν θα χρησιμοποιήσω έναν συνδυασμό @Configuration και @Bean για να δημιουργήσω φασόλια στο Spring Boot ή να χρησιμοποιήσω @Service και άλλους σχολιασμούς απευθείας στην τάξη. Ο συγγραφέας τείνει να χρησιμοποιεί το πρώτο, δηλαδή έναν συνδυασμό @Configuration και @Bean.
Ας δούμε πρώτα ένα παράδειγμα, ο στόχος είναι να δημιουργήσετε ένα φασόλι για το SearchService.
Χρησιμοποιήστε @Service απευθείας:
Ξεκινήστε την εφαρμογή, πρόσβαση στο πρόγραμμα περιήγησης: http://localhost:8081/search?q=koly, εμφάνιση σελίδας: ["hello", "koly"]
Τρόποι χρήσης @Configuration και @Bean:
Σε σύγκριση με την απευθείας χρήση @Service κώδικα, υπάρχει μια κλάση AppConfig που καταργεί τους @Service σχολιασμούς που τοποθετούνται πάνω από το ElasticSearchServiceImpl. Με μια ματιά, υπάρχει περισσότερος κώδικας και. Ποια είναι λοιπόν τα οφέλη από τη χρήση του τελευταίου;
Ο συγγραφέας πιστεύει ότι τα οφέλη είναι:
Διαχωρισμός ανησυχιών
Χρησιμοποιώντας μεθόδους @Configuration και @Bean, η δημιουργία φασολιών είναι όλα σε ένα μέρος και η διεπαφή και η εφαρμογή της δεν έχουν καμία σχέση με τη δημιουργία του φασολιού.
Εάν η δημιουργία του φασολιού πρέπει να αλλάξει, τότε χρειάζεται μόνο να προβάλετε και να τροποποιήσετε την αντίστοιχη κλάση διαμόρφωσης και δεν χρειάζεται να μεταβείτε στον αντίστοιχο κόκκο Java για να κάνετε αλλαγές. Για παράδειγμα, μερικές φορές η δημιουργία φασολιών χρειάζεται να συνεργαστεί με @Scope ή @Profile και χρειάζεται μόνο να τροποποιήσει την κλάση Configuration.
Ενιαίος δασμός
@service ίδιος ο σχολιασμός αναλαμβάνει δύο ευθύνες:
Το ένα είναι η δημιουργία φασολιών. Το δεύτερο είναι να προσδιορίσετε μια τάξη ως υπηρεσία. Υποδεικνύει ότι μια σχολιασμένη κλάση είναι μια "Υπηρεσία", η οποία αρχικά ορίστηκε από το Domain-Driven
Σχεδιασμός (Evans, 2003) ως «μια λειτουργία που προσφέρεται ως διεπαφή που στέκεται μόνη της στο μοντέλο, χωρίς ενθυλακωμένη κατάσταση».
Παραπάνω είναι η εξήγηση της Spring για @Service σχολιασμούς. Αυτή η is@Service αντιπροσωπεύει στην πραγματικότητα μια ανιθαγενή, ανεξάρτητη, λειτουργία διεπαφής στο DDD.
Με τον τρόπο @Bean και @Configuration συνεργασίας, η δημιουργία φασολιών παραδίδεται σε ξεχωριστή κλάση και η ταυτότητα της Υπηρεσίας παραδίδεται στη διεπαφή και το όνομα της κλάσης σε Java. Αυτό αντικατοπτρίζεται επίσης στα Spring Data, όπως το Repository, το οποίο προσδιορίζεται με το όνομά του, όπως το CrudRepository. Επομένως, η Υπηρεσία αντικατοπτρίζεται επίσης από το όνομα. Συγκεκριμένοι ορισμοί ιεραρχίας μπορούν να χρησιμοποιηθούν για την παροχή περισσότερων επιπέδων σύμφωνα με το όνομα του έργου χωρίς να βασίζονται στους σχολιασμούς που παρέχονται από το Spring, όπως το επίπεδο Mapper, το επίπεδο Validator κ.λπ.
Επιπλέον, το φασόλι και η εξυπηρέτηση είναι δισδιάστατες έννοιες. Το ένα για τη συγκεκριμένη εφαρμογή και το άλλο για τις έννοιες στο DDD.
Πιο ευέλικτο
Χρησιμοποιώντας @Bean μεθόδους, μπορείτε να δημιουργήσετε παρουσίες κλάσεων στη βιβλιοθήκη. Εάν χρησιμοποιείτε τη μέθοδο @Service, δεν θα μπορείτε να προσθέσετε @Service σχόλια στις αντίστοιχες της βιβλιοθήκης.
Λιγότερες γνώσεις
Η αρχή της ελάχιστης γνώσης σημαίνει:
Όσο λιγότερη τεχνολογία ή γνώση απαιτείται για την ολοκλήρωση της λειτουργίας, τόσο το καλύτερο, ώστε να διασφαλιστεί η απλότητα του έργου και να μειωθεί η δυσκολία εκμάθησης του έργου.
Δεδομένου ότι δεν είναι δυνατή η δημιουργία παρουσιών κλάσεων στη βιβλιοθήκη κλάσεων χρησιμοποιώντας @Service, πρέπει να χρησιμοποιήσετε τη μορφή @Configuration και @Bean όταν αντιμετωπίζετε παρόμοιες ανάγκες. Σε αυτό το σημείο, υπάρχουν σχολιασμοί όπως @Service, @Configuration και @Bean σε ολόκληρο το έργο, και αυτοί οι σχολιασμοί κάνουν το ίδιο πράγμα, δηλαδή δημιουργούν το φασόλι.
Με @Service, υπάρχει μεγάλη πιθανότητα @Service, @Component, @Configuration και @Bean ταυτόχρονα.
Κατά τη χρήση @Configuration και @Bean μπορεί να εξαλείψει εντελώς τη χρήση @Service και @Component, κάτι που είναι σύμφωνο με την αρχή της ελάχιστης γνώσης.
Τέλος, παρεμπιπτόντως, τα ανοιξιάτικα φασόλια δημιουργήθηκαν σε xml και αργότερα χρησιμοποιήθηκαν Java για διαμόρφωση. Ο κύριος λόγος για τη μη χρήση της XML είναι ότι δεν είναι αρκετά συνοπτική και δεν διαθέτει χαρακτηριστικά όπως ο έλεγχος του χρόνου μεταγλώττισης, παρά η ανάγκη εξάπλωσης της δημιουργίας φασολιών σε όλες τις.
Συνοψίζοντας, ο συγγραφέας προτιμά να χρησιμοποιεί μεθόδους @Configuration και @Bean. |
Προηγούμενος:Ένας απλός τρόπος για να καθαρίσετε την οθόνη από τη γραμμή εντολών της PythonΕπόμενος:Διάφοροι τρόποι χρήσης κατανεμημένων κλειδαριών (redis, zookeeper, βάση δεδομένων)
|