|
|
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 komandrindasNākamo:Vairāki veidi, kā izmantot izplatītās slēdzenes (redis, zookeeper, datu bāze)
|