Setter asosidagi DI container tomonidan beanlarni yaratish uchun argumentlarsiz konstruktor yoki argumentlarsiz statik fabrika metodini chaqirgandan so‘ng, beanlar uchun set terlarn i chaqirish orqali amalga oshiriladi.
Quyidagi misolda dependency faqatgina setter orqali inject qilinadigan klass ko'rsatilgan. Ushbu klass oddiy Java klass hisoblanadi. Bu POJO (oddiy Java obyekt), u aniq container interfeyslari, bazaviy klasslar yoki annotatsiyalarga bog'liq emas.
public class SimpleMovieLister {
// SimpleMovieLister MovieFinder ga bog'liq
private MovieFinder movieFinder;
// Spring container MovieFinder ni kiritishga imkon beradigan setter
public void setMovieFinder(MovieFinder movieFinder) {
this.movieFinder = movieFinder;
}
// Business-logic, u haqiqatda inject qilingan MovieFinder ni ishlatadi... (tushirib qoldirilgan)
}
class SimpleMovieLister {
// Kechiktirilgan initsializatsiya xususiyati, Spring container MovieFinder ni inject qilishi mumkin
lateinit var movieFinder: MovieFinder
// Business-logic, u haqiqatda inject qilingan MovieFinder ni ishlatadi... (tushirib qoldirilgan)
}
ApplicationContext tomonidan boshqarilgan beanlar uchun konstruktor asosida DI va setter asosida DI ni qo‘llab-quvvatlaydi. U shuningdek, ba'zi dependency lar allaqachon konstruktor yondashuvi yordamida inject qilinganidan so'ng, setter asosida DI ni qo‘llab-quvvatlaydi. Siz BeanDefinition shaklida dependency ni sozlaysiz, ular bilan siz xususiyatlarni bir formatdan boshqasiga aylantirish uchun PropertyEditor instansiyalari bilan foydalanasiz. Biroq, Spring foydalanuvchilarining aksariyati ushbu klasslar bilan to' g'ridan-to'g'ri (dasturiy), balkim XML bean ta'riflari bilan, annotatsiyalangan komponentlar bilan (ya'ni @Component, @Controller va hokazo annotatsiyalangan klasslar), yoki @Bean annotatsiyalangan metodlar bilan ish olib borishadi, Java asosidagi @Configuration annotatsiyalangan klasslarda. Keyin ushbu manbalar ichki ravishda BeanDefinition instansiyalariga aylantiriladi va Spring ning IoC container ini yuklash uchun ishlatiladi.
GO TO FULL VERSION