@Component vs @Repository i @Service u proljeće
1. Uvod
U ovom brzom vodiču naučit ćemo o razlikama između @Component, @Repository, @Service bilješke, u Proljetnom okviru.
2. Proljetne bilješke
U većini tipičnih aplikacija imamo različite slojeve poput pristupa podacima, prezentacije, usluge, poslovanja itd.
I, u svakom sloju imamo razne mahune. Jednostavno rečeno, da biste ih automatski otkrili, Spring koristi bilješke za skeniranje putova razreda.
Zatim registrira svaki grah u ApplicationContext.
Evo kratkog pregleda nekoliko ovih bilješki:
- @Komponenta je generički stereotip za bilo koju komponentu kojom upravlja proljeće
- @Servis bilježi klase na uslužnom sloju
- @ Repozitorij označava klase na sloju postojanosti, koji će djelovati kao spremište baze podataka
Već imamo prošireni članak o tim bilješkama. Dakle, fokus ćemo zadržati samo na razlikama između njih.
3. Što je drugačije?
Glavna razlika između ovih stereotipa jest u tome što se koriste za različitu klasifikaciju. Kada označimo klasu za automatsko otkrivanje, trebali bismo koristiti odgovarajući stereotip.
Sada ćemo ih detaljnije pregledati.
3.1. @Komponenta
Možemo koristiti @Component u cijeloj aplikaciji da označimo grah kao upravljane komponente Springa. Proljeće samo pokupi i registrira grah s @Komponenta i ne traži @Servis i @ Repozitorij općenito.
Registrirani su u ApplicationContext jer se i sami bilježe s @Komponenta:
@Component public @interface Service {}
@Component public @interface Repository {}
@Servis i @ Repozitorij su posebni slučajevi @Komponenta. Tehnički su isti, ali ih koristimo u različite svrhe.
3.2. @ Repozitorij
@ RepozitorijZadatak je uhvatiti iznimke specifične za ustrajnost i ponovno ih vratiti kao jednu od proljetnih objedinjenih neprovjerenih iznimki.
Za ovo proljeće pruža PersistenceExceptionTranslationPostProcessor, što u kontekst naše aplikacije treba dodati:
Ovaj procesor za naknadno dodavanje graha dodaje savjetnika za bilo koji grah koji je označen @ Repozitorij.
3.3. @Servis
Grah označavamo s @Service da bismo označili da drži poslovnu logiku. Dakle, ne postoji nijedna druga specijalnost osim upotrebe u uslužnom sloju.
4. Zaključak
U ovom tekstu saznali smo o razlikama između @Component, @Repository, @Service bilješke. Ispitali smo svaku bilješku zasebno s područjima njihove uporabe.
Kao zaključak, uvijek je dobra ideja odabrati anotaciju na temelju njihovih slojeva.