|
|
Közzétéve 2018. 08. 30. 13:29:41
|
|
|

Ma a kollégáimmal arról beszéltem, hogy használjak-e @Configuration és @Bean kombinációját a babok készítéséhez a Spring Bootban, vagy inkább @Service és más megjegyzéseket használjak közvetlenül az órán. A szerző általában az elsőt használja, vagyis a @Configuration és a @Bean kombinációját.
Először nézzünk meg egy példát: a cél az, hogy létrehozzunk egy babot a SearchService számára.
Használd @Service közvetlenül:
Indítsd el az alkalmazást, böngésző hozzáférése: http://localhost:8081/search?q=koly, oldalmegjelenítés: ["hello", "koly"]
A @Configuration és @Bean használati módjai:
A @Service kód közvetlen használatával összehasonlítva van egy AppConfig osztály, amely eltávolítja az ElasticSearchServiceImpl tetején lévő @Service annotációt. Első pillantásra több kód és tanfolyam látható. Mik az utóbbi használatának előnyei?
A szerző úgy véli, hogy az előnyök a következők:
A konkrok szétválasztása
@Configuration és @Bean módszerekkel a bab előállítása mind egy helyen zajlik, és az interfész és annak megvalósítása semmi köze a bab létrehozásához.
Ha a bab létrehozását módosítani kell, akkor csak a megfelelő konfigurációs osztályt kell megnézned és módosítanod, és nem kell a megfelelő Java bean-hez menned a változtatáshoz. Például néha a babkészítéshez @Scope vagy @Profile-vel kell együttműködni, és csak a Konfiguráció osztályt kell módosítani.
Egyetlen feladat
@service annotáció maga két felelősséget vállal:
Az egyik a bab létrehozása; A második, hogy egy osztályt szolgáltatásként azonosítsuk. Jelzi, hogy egy annotált osztály egy "szolgáltatás", eredetileg a Domain-Driven által definiált
Tervezés (Evans, 2003) mint "egy olyan művelet, amely önállóan áll a modellben önálló interfészként, kapszulázott állapot nélkül."
Fent Spring magyarázata @Service annotációkra. Ez is@Service valójában egy állapot nélküli, független interfész műveletet képvisel a DDD-ben.
A @Bean és @Configuration együttműködés során a babok létrehozása egy külön osztályra kerül, a Szolgáltatás identitását pedig a Java interfészének és osztálynevének adja át. Ez tükröződik a Spring Data-ban is, például a Repository-ban, amelyet név szerint azonosítanak, például CrudRepository. Ezért a szolgálat kifejezést is tükrözi a név. Specifikus hierarchiadefiníciók segítségével több réteget biztosíthatunk a projekt név szerint anélkül, hogy a Spring által biztosított annotációkra hivatkoznának, mint például Mapper réteg, Validator réteg stb.
Ezen felül a bab és a szolgálat kétdimenziós fogalmak. Az egyik a konkrét megvalósításról, a másik a DDD fogalmairól.
Rugalmasabb
@Bean módszerekkel létrehozhatsz osztálypéldányokat a könyvtárban. Ha a @Service módszert használod, nem tudsz hozzátenni @Service hozzászólásokat a könyvtár megfelelő osztályaihoz.
Legkisebb tudás
A minimális tudás elve a következőket jelenti:
Minél kevesebb technológia vagy tudás szükséges a feladat befejezéséhez, annál jobb, hogy a projekt egyszerűsége és csökkentse a tanulás nehézségét.
Mivel nem lehet osztálypéldányokat létrehozni az osztálykönyvtárban @Service segítségével, hasonló igények esetén @Configuration és @Bean formát kell használni. Ezen a ponton az egész projektben vannak olyan megjegyzések, mint a @Service, @Configuration és @Bean, és ezek az annotációk ugyanazt csinálják, vagyis létrehozzák a babot.
@Service esetén nagy valószínűség, hogy egyszerre @Service, @Component, @Configuration és @Bean is megjelenik.
miközben @Configuration és @Bean használata teljesen megszüntetheti a @Service és @Component használatát, ami összhangban van a minimális tudás elvével.
Végül, egyébként a Spring Beans-t xml-ben készítették, majd később Java segítségével konfigurálták. Az XML-t nem használó fő oka az, hogy nem elég tömör, és nincs benne olyan funkciók, mint a fordítási idő ellenőrzése, nem pedig az a szükségesség, hogy a babok létrehozását osztályok között szétosztják.
Összefoglalva, a szerző inkább @Configuration és @Bean módszereket alkalmaz. |
Előző:Egy egyszerű módja annak, hogy töröld a képernyőt a Python parancssorábólKövetkező:Több módja az elosztott zárak használatának (redis, állatkerti őr, adatbázis)
|