See artikkel on masintõlke peegelartikkel, palun klõpsake siia, et hüpata algse artikli juurde.

Vaade: 12335|Vastuse: 0

[JavaEE] Kevad@Bean vs @Service annotatsioonide erinevus

[Kopeeri link]
Postitatud 30.08.2018 13:29:41 | | |
Täna arutasin kolleegidega, kas kasutada @Configuration ja @Bean kombinatsiooni ubade loomiseks Spring Bootis või kasutada @Service ja muid annotatsioone otse klassis. Autor kasutab tavaliselt esimest, st @Configuration ja @Bean kombinatsiooni.

Vaatame esmalt näidet: eesmärk on luua SearchService'i jaoks uba.

Kasuta @Service otse:




Käivita rakendus, brauseri ligipääs: http://localhost:8081/search?q=koly, lehe kuvamine: ["hello", "koly"]

Viisid @Configuration ja @Bean kasutamiseks:






Võrreldes @Service koodi otsekasutamisega on olemas AppConfig klass, mis eemaldab @Service annotatsioonid, mis on paigutatud ElasticSearchServiceImpl peale. Esmapilgul on rohkem koodi ja klasse. Millised on siis viimase kasutamise eelised?

Autor usub, et eelised on:

Ettevõtete eraldamine

@Configuration ja @Bean meetoditega toimub ubade tootmine ühes kohas ning liides ja selle teostus ei ole ubade loomisega mingit pistmist.

Kui ubade loomist tuleb muuta, siis tuleb vaadata ja muuta ainult vastavat konfiguratsiooniklassi, ning muudatuste tegemiseks ei pea minema vastavasse Java uba. Näiteks mõnikord tuleb ubade loomist teha koostööd @Scope või @Profile-ga ning muuta ainult konfiguratsiooni klassi.

Üksikteenistus

@service annotatsioon ise kannab kahte vastutust:

Üks neist on ubade valmistamine;
Teine on klassi tuvastamine teenusena.
Näitab, et annoteeritud klass on "teenus", algselt määratletud Domain-Driven poolt

Disain (Evans, 2003) kui "operatsioon, mida pakutakse liidesena, mis seisab mudelis iseseisvalt, ilma kapseldatud olekuta."

Ülal on Springi selgitus @Service annotatsioonide kohta. See is@Service esindab tegelikult olekuta, sõltumatut liidese operatsiooni DDD-s.

@Bean ja @Configuration koostöös antakse ubade loomine üle eraldi klassile ning teenuse identiteet antakse Java keeles liidesele ja klassinimele. See kajastub ka Spring Datas, näiteks Repository, mida nimetatakse nime järgi, näiteks CrudRepository. Seetõttu kajastub ka nimi teenindust. Spetsiifilisi hierarhia definitsioone saab kasutada projekti nime järgi uute kihte pakkumiseks, ilma et peaks tuginema Springi annotatsioonidele, nagu Mapper kiht, Validator kiht jne.

Lisaks on uba ja teenindus kahemõõtmelised mõisted. Üks konkreetse rakenduse kohta ja teine DDD kontseptsioonide kohta.

Paindlikum

@Bean meetoditega saad luua klasside eksemplare teegis. Kui kasutad @Service meetodit, ei saa sa lisada @Service kommentaare vastavatele klassidele raamatukogus.

Vähim teadmine

Minimaalse teadmise põhimõte tähendab:

Mida vähem on vaja tehnoloogiat või teadmisi funktsiooni täitmiseks, seda parem, et tagada projekti lihtsus ja vähendada õppimise raskusi.

Kuna klassiraamatukogus ei saa @Service abil klasside instantse luua, tuleb sarnaste vajaduste korral kasutada @Configuration ja @Bean vormi. Selles etapis on kogu projektis annotatsioonid nagu @Service, @Configuration ja @Bean ning need annotatsioonid teevad sama asja, st loovad uba.

@Service puhul on suur tõenäosus, et samaaegselt @Service, @Component, @Configuration ja @Bean.

@Configuration ja @Bean kasutamine võib täielikult kõrvaldada @Service ja @Component kasutamise, mis on kooskõlas minimaalse teadmise põhimõttega.

Lõpuks, muide, kevadoad loodi xml-is ja hiljem kasutati konfiguratsiooniks Java't. Peamine põhjus, miks XML-i ei kasutata, on see, et see ei ole piisavalt lühike ja puuduvad funktsioonid nagu kompileerimisaja kontroll, pigem vajadus jagada ubade loomist klasside vahel.

Kokkuvõtteks eelistab autor kasutada @Configuration ja @Bean meetodeid.




Eelmine:Lihtne viis ekraani puhastamiseks Python'i käsurealt
Järgmine:Mitmed viisid hajutatud lukkude kasutamiseks (redis, zookeeper, andmebaas)
Disclaimer:
Kõik Code Farmer Networki poolt avaldatud tarkvara, programmeerimismaterjalid või artiklid on mõeldud ainult õppimiseks ja uurimistööks; Ülaltoodud sisu ei tohi kasutada ärilistel ega ebaseaduslikel eesmärkidel, vastasel juhul kannavad kasutajad kõik tagajärjed. Selle saidi info pärineb internetist ning autoriõiguste vaidlused ei ole selle saidiga seotud. Ülaltoodud sisu tuleb oma arvutist täielikult kustutada 24 tunni jooksul pärast allalaadimist. Kui sulle programm meeldib, palun toeta originaaltarkvara, osta registreerimist ja saa paremaid ehtsaid teenuseid. Kui esineb rikkumist, palun võtke meiega ühendust e-posti teel.

Mail To:help@itsvse.com