Spring Bean-ті пайдалана отырып, тәуелділікті енгізуді қалай қолдануға болады?
AI-дан жауап
sobes.tech AI
Spring Boot DI-ны үш негізгі әдіспен қолдайды:
-
Өріс арқылы енгізу:
Ең кең таралған және қарапайым әдіс.@Autowired-ды өріс үстіне қолдану. Өндірістік код үшін ұсынылмайды, себебі тестілеу мен инкапсуляция қиындық тудырады.// Өріс арқылы енгізу @Service public class MyService { @Autowired private MyDependency dependency; public void doSomething() { dependency.execute(); } } -
Setter арқылы енгізу:
@Autowired-ды сеттер үстіне қолдану. Бұл тәуелділіктің опционалдығын қамтамасыз етеді (егер сеттер шақырылмаса) және тестілеуді жеңілдетеді.// Setter арқылы енгізу @Service public class MyService { private MyDependency dependency; @Autowired public void setDependency(MyDependency dependency) { this.dependency = dependency; } public void doSomething() { dependency.execute(); } } -
Constructor арқылы енгізу:
Ең ұсынылатын әдіс.@Autowired-ды конструктор үстіне қолдану. Бұл тәуелділіктің объект құрылғаннан кейін өзгермейтінін қамтамасыз етеді және міндетті тәуелділіктерді нақты көрсетеді. Spring Boot 2.x+ нұсқаларында бір ғана конструктор болған жағдайда@Autowired-ды қою міндетті емес.// Constructor арқылы енгізу @Service public class MyService { private final MyDependency dependency; // Spring Boot 2.x+ нұсқаларында бір ғана конструктор болғанда @Autowired-ды қою міндетті емес public MyService(MyDependency dependency) { this.dependency = dependency; } public void doSomething() { dependency.execute(); } }
Spring контейнері @Component, @Service, @Repository, @Controller сияқты аннотациялармен белгіленген кластарды сканерлеп, оларға Bean-дар жасайды. Егер Bean-да @Autowired аннотациясы өріс, сеттер немесе конструктор үстінде анықталса, контейнер басқа тәуелділікті табу үшін типі мен/немесе аты бойынша іздейді және оны енгізеді. Егер бірнеше сәйкес Bean болса, @Qualifier қолдану арқылы нақтылау жүргізіледі.