Tento článek je zrcadlovým článkem o strojovém překladu, klikněte zde pro přechod na původní článek.

Pohled: 12335|Odpověď: 0

[JavaEE] Rozdíl mezi @Bean a @Service anotacemi

[Kopírovat odkaz]
Zveřejněno 30.08.2018 13:29:41 | | |
Dnes jsem s kolegy diskutoval, zda použít kombinaci @Configuration a @Bean k tvorbě zrn ve Spring Boot, nebo použít @Service a další poznámky přímo na kurz. Autor má tendenci používat první variantu, tedy kombinaci @Configuration a @Bean.

Podívejme se nejprve na příklad, cílem je vytvořit fazolu pro SearchService.

Používejte @Service přímo:




Spusťte aplikaci, přístup do prohlížeče: http://localhost:8081/search?q=koly, zobrazení stránky: ["hello", "koly"]

Způsoby, jak používat @Configuration a @Bean:






Ve srovnání s přímým použitím @Service kódu existuje třída AppConfig, která odstraní @Service anotací umístěných nad ElasticSearchServiceImpl. Na první pohled je tam víc kódu a tříd. Jaké jsou tedy výhody používání toho druhého?

Autor věří, že přínosy jsou:

Oddělení zájmů

Použitím metod @Configuration a @Bean je tvorba zrn vše na jednom místě a rozhraní a jeho implementace nemají s vytvořením zrna nic společného.

Pokud je potřeba změnit vytvoření zrna, stačí zobrazit a upravit odpovídající třídu Configuration a nemusíte jít do příslušného Java zrna, abyste provedli změny. Například někdy je potřeba vytvářet fazole spolupracovat s @Scope nebo @Profile a stačí upravit pouze třídu Configuration.

Samostatná služba

@service samotná anotace přebírá dvě povinnosti:

Jedním z nich je tvorba fazolí;
Druhým je identifikovat třídu jako službu.
Označuje, že anotovaná třída je "služba", původně definovaná doménově řízenou

Návrh (Evans, 2003) jako "operace nabízená jako rozhraní, které stojí samostatně v modelu, bez zapouzdřeného stavu."

Výše je Springovo vysvětlení @Service anotací. Tento is@Service ve skutečnosti představuje bezstavovnou, nezávislou operaci rozhraní v DDD.

Prostřednictvím spolupráce @Bean a @Configuration je tvorba zrn předána samostatné třídě a identita služby je předána rozhraní a názvu třídy v Javě. To se odráží i ve Spring Data, například v Repository, který je identifikován jménem, například CrudRepository. Proto se služba odráží i v názvu. Specifické definice hierarchie lze použít k poskytnutí více vrstev podle projektu podle názvu bez závislosti na anotacích poskytovaných Springem, jako jsou vrstva Mapper, vrstva Validator atd.

Navíc fazole a servis jsou dvourozměrné pojmy. Jedna o konkrétní implementaci a druhá o konceptech v DDD.

Flexibilnější

Pomocí @Bean metod můžete vytvářet instance tříd v knihovně. Pokud použijete metodu @Service, nebudete moci přidávat @Service komentáře do příslušných tříd v knihovně.

Nejméně znalostí

Princip minimálních znalostí znamená:

Čím méně technologie nebo znalostí je potřeba k dokončení funkce, tím lépe, aby byla zajištěna jednoduchost projektu a snížila se obtížnost učení projektu.

Protože není možné vytvářet instance tříd v knihovně tříd pomocí @Service, musíte při podobných potřebách použít formu @Configuration a @Bean. V tomto bodě jsou v celém projektu anotace jako @Service, @Configuration a @Bean, a tyto anotace dělají totéž, tedy vytvářejí zrno.

U @Service je vysoká pravděpodobnost @Service, @Component, @Configuration a @Bean současně.

Používání @Configuration a @Bean může zcela eliminovat použití @Service a @Component, což je v souladu s principem minimálních znalostí.

A nakonec, Spring Beans byly vytvořeny v xml a později použity v Javě pro konfiguraci. Hlavním důvodem, proč XML nepoužíváme, je, že není dostatečně stručný a nemá funkce jako kontrola při kompilaci, místo potřeby rozdělit tvorbu zrn mezi třídy.

Shrnuto, autor dává přednost @Configuration a @Bean metodám.




Předchozí:Jednoduchý způsob, jak vymazat obrazovku z příkazového řádku Pythonu
Další:Několik způsobů využití distribuovaných zámků (redis, zookeeper, databáze)
Zřeknutí se:
Veškerý software, programovací materiály nebo články publikované organizací Code Farmer Network slouží pouze k učení a výzkumu; Výše uvedený obsah nesmí být používán pro komerční ani nelegální účely, jinak nesou všechny důsledky uživatelé. Informace na tomto webu pocházejí z internetu a spory o autorská práva s tímto webem nesouvisí. Musíte výše uvedený obsah ze svého počítače zcela smazat do 24 hodin od stažení. Pokud se vám program líbí, podporujte prosím originální software, kupte si registraci a získejte lepší skutečné služby. Pokud dojde k jakémukoli porušení, kontaktujte nás prosím e-mailem.

Mail To:help@itsvse.com