@Component vs @Repository a @Service na jar
1. Úvod
V tomto rýchlom výučbe sa dozvieme o rozdieloch medzi nimi @Component, @Repository, @Service anotácií v jarnom rámci.
2. Jarné anotácie
Vo väčšine typických aplikácií máme odlišné vrstvy, ako je prístup k dátam, prezentácia, služby, podnikanie atď.
A v každej vrstve máme rôzne fazule. Jednoducho povedané, automaticky ich zistiť, Jar používa anotácie skenovania cesty k triede.
Potom zaregistruje každú fazuľu v ApplicationContext.
Tu je rýchly prehľad niekoľkých z týchto anotácií:
- @ Komponent je všeobecný stereotyp pre ktorýkoľvek komponent spravovaný Springom
- @Služba anotuje triedy na servisnej vrstve
- @Úložisko anotuje triedy vo vrstve perzistencie, ktorá bude slúžiť ako databázové úložisko
O týchto anotáciách už máme rozšírený článok. Sústredíme sa teda iba na rozdiely medzi nimi.
3. Čo sa líši?
Hlavným rozdielom medzi týmito stereotypmi je, že sa používajú na odlišnú klasifikáciu. Keď anotujeme triedu pre automatickú detekciu, mali by sme použiť príslušný stereotyp.
Prejdime si ich teraz podrobnejšie.
3.1. @ Komponent
Môžeme použiť @Component v celej aplikácii na označenie fazule ako spravovaných komponentov Spring. Jar iba zbierajte a registrujte fazuľu s @ Komponent a nehľadá @Služba a @Úložisko všeobecne.
Sú zaregistrovaní v ApplicationContext pretože oni sami sú anotovaní @ Komponent:
@Component public @interface Service {}
Repozitár @Component public @interface {}
@Služba a @Úložisko sú špeciálne prípady @ Komponent. Sú technicky rovnaké, ale používame ich na rôzne účely.
3.2. @Úložisko
@ÚložiskoÚlohou je zachytiť výnimky špecifické pre perzistenciu a zmeniť ich ako jednu zo zjednotených nekontrolovaných výnimiek spoločnosti Spring.
Pre tento rok na jar poskytuje PersistenceExceptionTranslationPostProcessor, čo si vyžaduje v našom kontexte aplikácie pridať:
Tento spracovateľ fazule pridáva poradcu ku všetkým fazuľkám, ktoré sú anotované @Úložisko.
3.3. @Služba
Fazuľu označíme značkou @Service, čo naznačuje, že drží obchodnú logiku. Neexistuje teda žiadna iná špecialita okrem jej použitia vo vrstve služieb.
4. Záver
V tomto písaní sme sa dozvedeli o rozdieloch medzi @Component, @Repository, @Service anotácie. Každú anotáciu sme skúmali osobitne s oblasťami ich použitia.
Na záver je vždy dobré zvoliť anotáciu na základe ich konvencií vrstiev.