@Component vs @Repository e @Service in primavera

1. Introduzione

In questo breve tutorial, impareremo le differenze tra @Component, @Repository, @Service annotations, in Spring Framework.

2. Annotazioni di primavera

Nella maggior parte delle applicazioni tipiche, abbiamo livelli distinti come accesso ai dati, presentazione, servizio, affari, ecc.

E, in ogni strato, abbiamo vari fagioli. In poche parole, per rilevarli automaticamente, Spring utilizza le annotazioni di scansione del percorso di classe .

Quindi, registra ogni bean in ApplicationContext .

Ecco una rapida panoramica di alcune di queste annotazioni:

  • @Component è uno stereotipo generico per qualsiasi componente gestito da Spring
  • @Service annota le classi a livello di servizio
  • @Repository annota le classi al livello di persistenza, che fungerà da repository di database

Abbiamo già un articolo esteso su queste annotazioni. Quindi ci concentreremo solo sulle differenze tra loro.

3. Cosa c'è di diverso?

La principale differenza tra questi stereotipi è che vengono utilizzati per una classificazione diversa. Quando annotiamo una classe per il rilevamento automatico, dovremmo usare il rispettivo stereotipo.

Ora, esaminiamoli in modo più dettagliato.

3.1. @Componente

Possiamo usare @Component in tutta l'applicazione per contrassegnare i bean come componenti gestiti da Spring . Spring raccoglie e registra i bean solo con @Component e non cerca @Service e @Repository in generale.

Sono registrati in ApplicationContext perché sono annotati con @Component :

@Component public @interface Service { } 
@Component public @interface Repository { } 

@Service e @Repository sono casi speciali di @Component . Tecnicamente sono uguali ma li usiamo per scopi diversi.

3.2. @Repository

Il compito di @Repository è quello di catturare le eccezioni specifiche della persistenza e rilanciarle come una delle eccezioni non controllate unificate di Spring .

Per questa primavera fornisce PersistenceExceptionTranslationPostProcessor , che richiede di aggiungere nel nostro contesto applicativo:

Questo post processore bean aggiunge un advisor a qualsiasi bean annotato con @Repository.

3.3. @Servizio

Contrassegniamo i bean con @Service per indicare che contiene la logica di business . Quindi non c'è nessun'altra specialità se non usarla nel livello di servizio.

4. Conclusione

In questo articolo, abbiamo imparato a conoscere le differenze tra @Component, @Repository, @Service annotazioni . Abbiamo esaminato ogni annotazione separatamente con le aree del loro utilizzo.

In conclusione, è sempre una buona idea scegliere l'annotazione in base alle loro convenzioni di livello.