Denna artikel är en spegelartikel om maskinöversättning, klicka här för att hoppa till originalartikeln.

Utsikt: 12335|Svar: 0

[JavaEE] Skillnaden mellan spring @Bean och @Service annotationer

[Kopiera länk]
Publicerad på 2018-08-30 13:29:41 | | |
Idag diskuterade jag med mina kollegor om jag skulle använda en kombination av @Configuration och @Bean för att skapa bönor i Spring Boot eller att använda @Service och andra anteckningar direkt i klassen. Författaren tenderar att använda den första, det vill säga en kombination av @Configuration och @Bean.

Låt oss titta på ett exempel först, målet är att skapa en bean för SearchService.

Använd @Service direkt:




Starta applikationen, webbläsaråtkomst: http://localhost:8081/search?q=koly, sidvisning: ["hello", "koly"]

Sätt att använda @Configuration och @Bean:






Jämfört med att använda @Service kod direkt finns det en AppConfig-klass som tar bort de @Service anteckningar som lagts ovanpå ElasticSearchServiceImpl. Vid en snabb anblick finns det mer kod och klasser. Så vilka är fördelarna med att använda det senare?

Författaren anser att fördelarna är:

Separation av intressen

Med hjälp av @Configuration och @Bean metoder sker bönors skapande på ett och samma ställe, och gränssnittet och dess implementering har inget att göra med bönans skapande.

Om skapandet av bönan behöver ändras behöver du bara titta på och ändra motsvarande konfigurationsklass, och du behöver inte gå till motsvarande Java-böna för att göra ändringar. Till exempel behöver bönskapande ibland samarbetas med @Scope eller @Profile, och man behöver bara modifiera Configuration-klassen.

Enkeluppgift

@service annotering har i sig två ansvar:

En är skapandet av bönor;
Den andra är att identifiera en klass som en tjänst.
Indikerar att en annoterad klass är en "Service", ursprungligen definierad av Domain-Driven

Design (Evans, 2003) som "en operation erbjuden som ett gränssnitt som står ensamt i modellen, utan något inkapslat tillstånd."

Ovan följer Springs förklaring av @Service anteckningar. Den is@Service representerar faktiskt en tillståndslös, oberoende gränssnittsoperation i DDD.

Som en form av @Bean och @Configuration samarbete överlämnas skapandet av bönor till en separat klass, och identiteten Service överförs till gränssnittet och klassnamnet i Java. Detta återspeglas också i Spring Data, såsom Repository, som identifieras med namn, såsom CrudRepository. Därför återspeglas även Tjänst i namnet. Specifika hierarkidefinitioner kan användas för att tillhandahålla fler lager enligt projektet efter namn utan att förlita sig på annotationerna som tillhandahålls av Spring, såsom Mapper-lager, Validator-lager osv.

Dessutom är böna och tjänst tvådimensionella begrepp. En om den konkreta implementeringen och den andra om koncepten i DDD.

Mer flexibel

Med @Bean metoder kan du skapa instanser av klasser i biblioteket. Om du använder @Service-metoden kommer du inte kunna lägga till @Service kommentarer till motsvarande klasser i biblioteket.

Minst kunskap

Principen om minimal kunskap betyder:

Ju mindre teknik eller kunskap som krävs för att slutföra funktionen, desto bättre, för att säkerställa projektets enkelhet och minska svårigheterna att lära sig projektet.

Eftersom det inte är möjligt att skapa instanser av klasser i klassbiblioteket med @Service måste du använda formen @Configuration och @Bean när du stöter på liknande behov. Vid det här laget finns det anteckningar som @Service, @Configuration och @Bean i hela projektet, och dessa anteckningar gör samma sak, dvs. skapar bönan.

Med @Service finns det stor sannolikhet för @Service, @Component, @Configuration och @Bean samtidigt.

Samtidigt som användning av @Configuration och @Bean helt kan eliminera användningen av @Service och @Component, vilket är i linje med principen om minimal kunskap.

Slutligen, förresten, skapades Spring beans i xml och använde senare Java för konfiguration. Huvudorsaken till att XML inte används är att det inte är tillräckligt koncist och inte har funktioner som kompileringskontroll, snarare än behovet av att sprida skapandet av bönor över klasser.

Sammanfattningsvis föredrar författaren att använda @Configuration och @Bean metoder.




Föregående:Ett enkelt sätt att rensa skärmen från Python-kommandoraden
Nästa:Flera sätt att använda distribuerade lås (redis, zookeeper, databas)
Friskrivning:
All programvara, programmeringsmaterial eller artiklar som publiceras av Code Farmer Network är endast för lärande- och forskningsändamål; Ovanstående innehåll får inte användas för kommersiella eller olagliga ändamål, annars kommer användarna att bära alla konsekvenser. Informationen på denna sida kommer från internet, och upphovsrättstvister har inget med denna sida att göra. Du måste helt radera ovanstående innehåll från din dator inom 24 timmar efter nedladdning. Om du gillar programmet, vänligen stöd äkta programvara, köp registrering och få bättre äkta tjänster. Om det finns något intrång, vänligen kontakta oss via e-post.

Mail To:help@itsvse.com