@Component vs @Repository og @Service om foråret

1. Introduktion

I denne hurtige vejledning lærer vi om forskellene mellem @Komponent, @Repository, @Service kommentarer i forårets ramme.

2. Forårsanmærkninger

I de fleste typiske applikationer har vi forskellige lag som dataadgang, præsentation, service, forretning osv.

Og i hvert lag har vi forskellige bønner. Kort sagt for at opdage dem automatisk, Spring bruger annoncer til klassesøgning.

Derefter registrerer den hver bønne i ApplicationContext.

Her er et hurtigt overblik over et par af disse kommentarer:

  • @Komponent er en generisk stereotype for enhver Spring-managed komponent
  • @Service annoterer klasser i servicelaget
  • @Repository kommenterer klasser ved persistenslaget, som fungerer som et databaselager

Vi har allerede en udvidet artikel om disse kommentarer. Så vi holder kun fokus på forskellene mellem dem.

3. Hvad er anderledes?

Den største forskel mellem disse stereotyper er, at de bruges til forskellig klassificering. Når vi kommenterer en klasse til automatisk detektion, skal vi bruge den respektive stereotype.

Lad os nu gennemgå dem mere detaljeret.

3.1. @Komponent

Vi kan bruge @Component på tværs af applikationen til at markere bønnerne som Spring's administrerede komponenter. Foråret samler kun op og registrerer bønner med @Komponent og ser ikke efter @Service og @Repository generelt.

De er registreret i ApplicationContext fordi de selv er kommenteret med @Komponent:

@Komponent offentlig @interfacetjeneste {} 
@Komponent offentligt @interface-lager {} 

@Service og @Repository er specielle tilfælde af @Komponent. De er teknisk set de samme, men vi bruger dem til forskellige formål.

3.2. @Repository

@RepositoryJob er at fange vedholdenhedsspecifikke undtagelser og omlægge dem som en af ​​Spring's ensartede ukontrollerede undtagelse.

For dette forår giver PersistenceExceptionTranslationPostProcessor, der kræver at tilføje i vores applikationskontekst:

Denne bønnepostprocessor tilføjer en rådgiver til enhver bønne, der er kommenteret med @Repository.

3.3. @Service

Vi markerer bønner med @Service for at indikere, at det holder forretningslogikken. Så der er ikke nogen anden specialitet undtagen at bruge den i servicelaget.

4. Konklusion

I denne opskrivning lærte vi om forskellene mellem @Komponent, @Repository, @Service kommentarer. Vi undersøgte hver annotering separat med de anvendelsesområder.

Som en konklusion er det altid en god ide at vælge kommentaren baseret på deres lagkonventioner.