@Komponens vs @Repository és @Service tavasszal

1. Bemutatkozás

Ebben a gyors bemutatóban megismerjük a különbségeket @Component, @Repository, @Service a tavaszi keretben.

2. Tavaszi kommentárok

A legtöbb tipikus alkalmazásban különálló rétegeink vannak, mint például az adatokhoz való hozzáférés, a prezentáció, a szolgáltatás, az üzlet stb.

És minden rétegben különféle babunk van. Egyszerűen fogalmazva, hogy automatikusan észlelje őket, Spring az osztályútvonal szkenneléshez tartozó jegyzeteket használja.

Ezután minden babot bejegyez a ApplicationContext.

Íme egy rövid áttekintés ezekből a feljegyzésekből:

  • @Összetevő egy általános sztereotípia minden Spring által kezelt komponenshez
  • @Szolgáltatás feljegyzi az osztályokat a szolgáltatási rétegben
  • @Raktár osztályokat jegyzetel a perzisztencia rétegnél, amelyek adatbázis-tárolóként fognak működni

Már van egy kiterjesztett cikkünk ezekről a kommentárokról. Tehát csak a közöttük lévő különbségekre összpontosítunk.

3. Mi a különbség?

A legnagyobb különbség e sztereotípiák között az, hogy különböző osztályozásra használják őket. Amikor feljegyezünk egy osztályt az automatikus detektáláshoz, akkor a megfelelő sztereotípiát kell használnunk.

Most nézzük át őket részletesebben.

3.1. @Összetevő

A @Component alkalmazást az alkalmazás egészében használhatjuk a bab megjelölésére Spring által felügyelt komponensként. A tavasz csak a babot veszi fel és regisztrálja @Összetevő és nem keresi @Szolgáltatás és @Raktár általánosságban.

Ban vannak bejegyezve ApplicationContext mert magukkal vannak jelölve @Összetevő:

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

@Szolgáltatás és @Raktár speciális esetei @Összetevő. Műszakilag megegyeznek, de különböző célokra használjuk őket.

3.2. @Raktár

@RaktárFeladata a kitartásspecifikus kivételek felfogása és újbóli megismertetése Spring egyik nem ellenőrzött kivételének egyikeként.

Erre a tavasz biztosítja PersistenceExceptionTranslationPostProcessor, amelyhez hozzá kell adni az alkalmazási környezetünket:

Ez a bab utáni feldolgozó hozzáad egy tanácsadót minden babhoz, amelyhez jegyzeteket fűznek @Raktár.

3.3. @Szolgáltatás

A babot a @Service szolgáltatással jelöljük, jelezve, hogy az üzleti logikát tartja fenn. Tehát nincs más különlegesség, csak a szolgáltatási rétegben történő felhasználás.

4. Következtetés

Ebben az írásban megismerhettük a különbségeket @Component, @Repository, @Service annotációk. Minden egyes annotációt külön megvizsgáltunk felhasználásuk területeivel.

Összegzésként elmondható, hogy mindig jó ötlet az annotációt rétegegyezményeik alapján választani.