Ez a cikk egy tükör gépi fordítás, kérjük, kattintson ide, hogy ugorjon az eredeti cikkre.

Nézet: 12335|Válasz: 0

[JavaEE] A tavaszi @Bean és @Service annotációk különbsége

[Linket másol]
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ól
Következő:Több módja az elosztott zárak használatának (redis, állatkerti őr, adatbázis)
Lemondás:
A Code Farmer Network által közzétett összes szoftver, programozási anyag vagy cikk kizárólag tanulási és kutatási célokra szolgál; A fenti tartalmat nem szabad kereskedelmi vagy illegális célokra használni, különben a felhasználók viselik az összes következményet. Az oldalon található információk az internetről származnak, és a szerzői jogi vitáknak semmi köze ehhez az oldalhoz. A fenti tartalmat a letöltés után 24 órán belül teljesen törölni kell a számítógépéről. Ha tetszik a program, kérjük, támogassa a valódi szoftvert, vásároljon regisztrációt, és szerezzen jobb hiteles szolgáltatásokat. Ha bármilyen jogsértés történik, kérjük, vegye fel velünk a kapcsolatot e-mailben.

Mail To:help@itsvse.com