@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.