Middle
172
Қазіргі Spring-те @Autowired аннотациясын көрсету қажеттілігі неге жоқ?
AI-дан жауап
sobes.tech AI
Spring 4.3-тан бастап, егер класс тек бір ғана конструкторға ие болса, Spring автоматты түрде тәуелділіктерді осы конструктор арқылы енгізеді, тіпті @Autowired болмаса да.
Көптеген конструкторлары бар жағдайда, Spring әлі де @Autowired аннотациясын талап етеді, ол қай конструкторды тәуелділіктерді енгізу үшін қолдану керектігін анықтау үшін.
Бір ғана конструкторы бар мысал:
// Бір конструкторы бар класс мысалы
public class MyService {
private final SomeDependency dependency;
public MyService(SomeDependency dependency) { // Spring автоматты түрде SomeDependency-ті енгізеді
this.dependency = dependency;
}
// ... басқа әдістер
}
Көптеген конструкторлары бар және @Autowired қолданылған мысал:
// Көптеген конструкторлары бар класс мысалы
public class MyOtherService {
private final AnotherDependency anotherDependency;
private final OptionalDependency optionalDependency;
// Тәуелділіктері жоқ конструктор
public MyOtherService() {
this.anotherDependency = null;
this.optionalDependency = null;
}
@Autowired // Spring осы конструкторды тәуелділіктерді енгізу үшін қолданады
public MyOtherService(AnotherDependency anotherDependency, OptionalDependency optionalDependency) {
this.anotherDependency = anotherDependency;
this.optionalDependency = optionalDependency;
}
@Autowired(required = false) // Қосымша конструктор, OptionalDependency қолданады
public MyOtherService(OptionalDependency optionalDependency) {
this.anotherDependency = null;
this.optionalDependency = optionalDependency;
}
// ... басқа әдістер
}
Бұл ерекшелік boilerplate-код санын азайтады және кластарды оқуға жеңілдетеді, әсіресе Constructor Injection кезінде. Бұл тәуелділіктерді енгізудің қазіргі заманғы Spring қосымшаларында ұсынылатын әдісі, себебі ол өзгермейтін объектілерді құруға ықпал етеді және тестілеуді жеңілдетеді.