Kakšna je razlika med opombami @Component, @Repository & @Service v programu Spring?
Ali se lahko anotacije @Component
, @Repository
in @Service
v pomladi uporabljajo izmenično ali poleg tega, da služijo kot pripomoček za zapisovanje, zagotavljajo kakšno posebno funkcionalnost?
Z drugimi besedami, če imam razred Service in spremenim anotacijo iz @Service
v @Component
, ali se bo še vedno obnašal enako?
Ali pa anotacija vpliva tudi na obnašanje in funkcionalnost razreda?
1957
3
Iz Dokumentacija pomladi:
V različici Spring 2.0 in novejših je anotacija
@Repository
označevalec zaSo skoraj enaki - vsi pomenijo, da je razred Springov fižol.
@Service
,@Repository
in@Controller
so specializirane@Component
. Z njimi lahko izberete izvajanje posebnih dejanj. Na primer:@Controller
fižol uporablja spring-mvc@Repository
beans so primerni za prevajanje izjem persistenceDruga stvar je, da komponente semantično določite različnim plastem.
Ena od stvari, ki jo ponuja
@Component
, je, da lahko z njo anotirate druge anotacije in jih nato uporabite na enak način kot@Service
.Pred kratkim sem na primer naredil:
Torej so vsi razredi, ki so anotirani z
@ScheduledJob
, pomladanska zrna in poleg tega so registrirani kot kremenova opravila. Zagotoviti morate le kodo, ki obdeluje določeno anotacijo.Uporaba anotacij
@Service
in@Repository
je pomembna z vidika povezave s podatkovno bazo.@Service
za vse povezave z DB, ki so tipa spletne storitve.@Repository
za vse svoje povezave s shranjenimi postopki DBČe ne uporabljate ustreznih opomb, se lahko soočite z izjemami, ki jih nadomeščajo transakcije povratka. Med stresnim obremenitvenim testom boste videli izjeme, ki so povezane s transakcijami JDBC za vračanje.