Tento článok je zrkadlovým článkom o strojovom preklade, kliknite sem pre prechod na pôvodný článok.

Pohľad: 12335|Odpoveď: 0

[JavaEE] Rozdiel medzi @Bean a @Service anotáciami

[Kopírovať odkaz]
Zverejnené 30. 8. 2018 13:29:41 | | |
Dnes som diskutoval s kolegami, či použiť kombináciu @Configuration a @Bean na tvorbu fazúľ v Spring Boot, alebo použiť @Service a ďalšie poznámky priamo na kurz. Autor má tendenciu používať tú prvú, teda kombináciu @Configuration a @Bean.

Pozrime sa najprv na príklad, cieľom je vytvoriť fazuľu pre SearchService.

Použite @Service priamo:




Spusti aplikáciu, prístup do prehliadača: http://localhost:8081/search?q=koly, zobrazenie stránky: ["hello", "koly"]

Spôsoby, ako používať @Configuration a @Bean:






V porovnaní s priamym používaním @Service kódu existuje trieda AppConfig, ktorá odstraňuje @Service anotácií umiestnených nad ElasticSearchServiceImpl. Na prvý pohľad je tam viac kódu a tried. Aké sú teda výhody používania toho druhého?

Autor verí, že výhody sú:

Oddelenie záujmov

Použitím metód @Configuration a @Bean je tvorba fazúľ všetko na jednom mieste a rozhranie a jeho implementácia nemajú nič spoločné s tvorbou zrna.

Ak je potrebné zmeniť vytvorenie zrna, stačí zobraziť a upraviť príslušnú triedu Configuration a nemusíte ísť do príslušného Java beanu na vykonanie zmien. Napríklad niekedy je potrebné vytvoriť fazuľu spolupracovať s @Scope alebo @Profile a stačí upraviť len triedu Configuration.

Samostatná služba

@service samotná anotácia preberá dve povinnosti:

Jednou je tvorba fazule;
Druhým je identifikovať triedu ako službu.
Označuje, že anotovaná trieda je "služba", pôvodne definovaná doménou riadenou doménou

Dizajn (Evans, 2003) ako "operácia ponúkaná ako rozhranie, ktoré stojí samostatne v modeli, bez zapuzdreného stavu."

Vyššie je Springovo vysvetlenie @Service anotácií. Tento is@Service v skutočnosti predstavuje bezstavovú, nezávislú rozhraniovú operáciu v DDD.

Pri spolupráci @Bean a @Configuration sa vytváranie fazúľ odovzdáva samostatnej triede a identita služby sa odovzdáva rozhraniu a názvu triedy v Jave. To sa odráža aj v Spring Data, ako je Repository, ktorý je identifikovaný menom, napríklad CrudRepository. Preto sa služba odráža aj v názve. Špecifické hierarchické definície môžu byť použité na poskytnutie viacerých vrstiev podľa projektu podľa názvu bez závislosti od anotácií poskytovaných Springom, ako sú vrstva Mapper, vrstva Validator a podobne.

Okrem toho sú fazuľa a služba dvojrozmerné pojmy. Jedna o konkrétnej implementácii a druhá o konceptoch v DDD.

Flexibilnejšie

Použitím @Bean metód môžete vytvárať inštancie tried v knižnici. Ak použijete metódu @Service, nebudete môcť pridávať @Service komentárov do príslušných tried v knižnici.

Najmenšie poznanie

Princíp minimálneho poznania znamená:

Čím menej technológií alebo vedomostí je potrebných na dokončenie funkcie, tým lepšie, aby sa zabezpečila jednoduchosť projektu a znížila náročnosť učenia sa projektu.

Keďže nie je možné vytvárať inštancie tried v knižnici tried pomocou @Service, musíte pri podobných potrebách použiť formu @Configuration a @Bean. V tomto bode sú v celom projekte anotácie ako @Service, @Configuration a @Bean a tieto anotácie robia to isté, teda vytvárajú zrno.

Pri @Service je vysoká pravdepodobnosť @Service, @Component, @Configuration a @Bean naraz.

Používanie @Configuration a @Bean môže úplne eliminovať používanie @Service a @Component, čo je v súlade s princípom minimálneho poznania.

Nakoniec, mimochodom, Spring Beans boli vytvorené v xml a neskôr používali Java na konfiguráciu. Hlavným dôvodom nepoužitia XML je, že nie je dostatočne stručný a nemá funkcie ako kontrola pri kompilácii, namiesto potreby rozložiť tvorbu zŕn medzi triedy.

Na záver, autor uprednostňuje používať @Configuration a @Bean metódy.




Predchádzajúci:Jednoduchý spôsob, ako vymazať obrazovku z príkazového riadku Pythonu
Budúci:Niekoľko spôsobov použitia distribuovaných zámkov (redis, zookeeper, databáza)
Vyhlásenie:
Všetok softvér, programovacie materiály alebo články publikované spoločnosťou Code Farmer Network slúžia len na vzdelávacie a výskumné účely; Vyššie uvedený obsah nesmie byť použitý na komerčné alebo nezákonné účely, inak nesú všetky následky používateľmi. Informácie na tejto stránke pochádzajú z internetu a spory o autorské práva s touto stránkou nesúvisia. Musíte úplne vymazať vyššie uvedený obsah zo svojho počítača do 24 hodín od stiahnutia. Ak sa vám program páči, podporte originálny softvér, zakúpte si registráciu a získajte lepšie originálne služby. Ak dôjde k akémukoľvek porušeniu, kontaktujte nás prosím e-mailom.

Mail To:help@itsvse.com