Šis raksts ir mašīntulkošanas spoguļraksts, lūdzu, noklikšķiniet šeit, lai pārietu uz oriģinālo rakstu.

Skats: 12335|Atbildi: 0

[JavaEE] Pavasara @Bean un @Service anotāciju atšķirība

[Kopēt saiti]
Publicēts 30.08.2018 13:29:41 | | |
Šodien es apspriedu ar kolēģiem, vai izmantot @Configuration un @Bean kombināciju, lai izveidotu pupiņas pavasara zābakā, vai izmantot @Service un citas anotācijas tieši klasē. Autors mēdz izmantot pirmo, tas ir, @Configuration un @Bean kombināciju.

Vispirms apskatīsim piemēru, mērķis ir izveidot pupiņu SearchService.

Izmantojiet @Service tieši:




Startējiet lietojumprogrammu, piekļuve pārlūkprogrammai: http://localhost:8081/search?q=koly, lapas displejs: ["hello", "koly"]

@Configuration un @Bean lietošanas veidi:






Salīdzinot ar @Service koda tiešu izmantošanu, ir AppConfig klase, kas noņem @Service anotācijas, kas novietotas virs ElasticSearchServiceImpl. Īsumā ir vairāk koda un klases. Tātad, kādas ir pēdējās izmantošanas priekšrocības?

Autors uzskata, ka ieguvumi ir:

Bažu nošķiršana

Izmantojot @Configuration un @Bean metodes, pupiņu izveide ir vienuviet, un saskarnei un tās īstenošanai nav nekāda sakara ar pupiņu izveidi.

Ja pupiņu izveide ir jāmaina, tad jums ir nepieciešams tikai apskatīt un modificēt atbilstošo konfigurācijas klasi, un, lai veiktu izmaiņas, jums nav jādodas uz atbilstošo Java pupiņu. Piemēram, dažreiz pupiņu radīšana ir jāsadarbojas ar @Scope vai @Profile, un tikai jāmodificē konfigurācijas klase.

Vienreizējs pienākums

@service anotācija pati par sevi uzņemas divus pienākumus:

Viens ir pupiņu radīšana;
Otrais ir identificēt klasi kā pakalpojumu.
Norāda, ka anotēta klase ir "Pakalpojums", ko sākotnēji definēja domēna vadīts

Dizains (Evans, 2003) kā "darbība, kas tiek piedāvāta kā saskarne, kas stāv atsevišķi modelī, bez iekapsulēta stāvokļa".

Augstāk ir pavasara skaidrojums par @Service anotācijām. Šī is@Service faktiski ir bezvalstnieciska, neatkarīga saskarnes darbība DDD.

@Bean un @Configuration sadarbības ceļā pupiņu radīšana tiek nodota atsevišķai klasei, un Pakalpojuma identitāte tiek nodota saskarnei un klases nosaukumam Java. Tas atspoguļojas arī pavasara datos, piemēram, repozitorijā, kas tiek identificēts pēc nosaukuma, piemēram, CrudRepository. Tāpēc pakalpojums atspoguļojas arī nosaukumā. Īpašas hierarhijas definīcijas var izmantot, lai nodrošinātu vairāk slāņu atbilstoši projektam pēc nosaukuma, nepaļaujoties uz pavasara sniegtajām anotācijām, piemēram, kartētāja slāni, validatora slāni utt.

Turklāt pupiņas un pakalpojums ir divdimensiju jēdzieni. Viens par konkrētu īstenošanu un otrs par DDD koncepcijām.

Elastīgāks

Izmantojot @Bean metodes, bibliotēkā var izveidot klašu gadījumus. Ja izmantojat @Service metodi, jūs nevarēsiet pievienot @Service komentārus atbilstošajām bibliotēkas klasēm.

Vismazākās zināšanas

Minimālo zināšanu princips nozīmē:

Jo mazāk tehnoloģiju vai zināšanu, kas nepieciešamas funkcijas izpildei, jo labāk, lai nodrošinātu projekta vienkāršību un samazinātu projekta apguves grūtības.

Tā kā klases bibliotēkā nav iespējams izveidot klašu gadījumus, izmantojot @Service, jums ir jāizmanto @Configuration un @Bean forma, ja rodas līdzīgas vajadzības. Šajā brīdī visā projektā ir tādas anotācijas kā @Service, @Configuration un @Bean, un šīs anotācijas dara to pašu, t.i., izveido pupiņu.

Ar @Service pastāv liela varbūtība, ka vienlaicīgi @Service, @Component, @Configuration un @Bean.

Izmantojot @Configuration un @Bean var pilnībā novērst @Service un @Component izmantošanu, kas atbilst minimālo zināšanu principam.

Visbeidzot, starp citu, pavasara pupiņas tika izveidotas xml un vēlāk konfigurācijai izmantoja Java. Galvenais iemesls, kāpēc netiek izmantots XML, ir tas, ka tas nav pietiekami kodolīgs un tam nav tādu funkciju kā kompilācijas laika pārbaude, nevis nepieciešamība izplatīt pupiņu izveidi starp klasēm.

Rezumējot, autors dod priekšroku @Configuration un @Bean metodēm.




Iepriekšējo:Vienkāršs veids, kā notīrīt ekrānu no Python komandrindas
Nākamo:Vairāki veidi, kā izmantot izplatītās slēdzenes (redis, zookeeper, datu bāze)
Atruna:
Visa programmatūra, programmēšanas materiāli vai raksti, ko publicē Code Farmer Network, ir paredzēti tikai mācību un pētniecības mērķiem; Iepriekš minēto saturu nedrīkst izmantot komerciāliem vai nelikumīgiem mērķiem, pretējā gadījumā lietotājiem ir jāuzņemas visas sekas. Informācija šajā vietnē nāk no interneta, un autortiesību strīdiem nav nekāda sakara ar šo vietni. Iepriekš minētais saturs ir pilnībā jāizdzēš no datora 24 stundu laikā pēc lejupielādes. Ja jums patīk programma, lūdzu, atbalstiet oriģinālu programmatūru, iegādājieties reģistrāciju un iegūstiet labākus oriģinālus pakalpojumus. Ja ir kādi pārkāpumi, lūdzu, sazinieties ar mums pa e-pastu.

Mail To:help@itsvse.com