Springda Bean Nima?
Bean Spring frameworkning muhim kontseptsiyasidir shuning uchun agar siz Springdan foydalanmoqchi bo’lsangiz, uning nima ekanligini va qanday ishlashini tushunish juda muhimdir. Ta’rifga ko’ra, spring bean ilovangizning asosini tashkil etuvchi va Spring IoC konteyneri tomonidan boshqariladigan ob’ektdir . Bean — bu Spring IoC konteyneri tomonidan yaratilgan, yig’ilgan boshqariladigan ob’ekt. Yoki bean sizning ilovangizdagi ob’ektlardan biridir. Bean va ular orasidagi bog’liqliklar konteyner tomonidan ishlatiladigan- konfiguratsiya metama’lumotlarida aks ettirilgan.
Inversion of Control (IoC)
Boshqaruvning inversiyasi(IoC) Spring da qaysi ob’ektlarni avtomatik tarzda taqdim etilishini aniqlaydi. Yoki ob’ekt o’zining dependence larni o’zi emas spring yaratib beradi deb aytish mumkin.
Misol uchun ushbu codega qaraylik:
class Employee {
public String name;
public Address address;
Employee(String name, Address address) {
this.name = name;
this.address = address;
}
//getter and setters
}
class Address {
int houseNo;
String city;
String street;
Address(String city, String street) {
this.city = city;
this.street = street;
}
//getters and setters
}
Employee ob’ektini yaratmoqchi bo’lsak, avvalo Adress classi kerak
Address address = new Address("Tashkent", "beruniy");
Employee employee = new Employee(("Vali", address);
Bu erda biz Address ob’ektini o’zimiz yaratdik va uni Employee konstruktoriga o’tkazdik. Ushbu yondashuvda hech qanday noto’g’ri narsa yo’q, lekin bu kodlarni bir biriga muhtoj qilib qoʻyadi .
IoC ga ehtiyoj
Agar Dependent classlar soni ko’proq bo’lsa, har safar barcha ob’ektlarni ta’minlash juda qiyin bo’ladi. Shunday qilib, buning o’rniga, biz classga qaysi ob’ektlar kerakligini aniqlashimiz mumkin va biz ularni IoC konteynerimizda saqlanadigan metama’lumotlar yordamida uzatishimiz mumkin.
Endi bu o’zgarishlarni annotationlar yordamida amalga oshirishimiz mumkin:
Birinchi bo’lib Employee classini Component sifatida belgilshimiz kerak. Keyin bog’liq classlar uchun bean yaratishimiz mumkin bo’ladi.
@Component
class Employee {
}
Address classini beanini yarating, Beanni biz main metodga ega bo’lgan classda yaratishimiz mumkin, chunki u SpringBootApplication annotation ega bo’ladi. yoki biz konfiguratsiya deb nomlangan yangi paketini yaratishimiz va uning ichida barcha konfiguratsiyalar bilan bog’liq class larni yaratishimiz mumkin.
@Configuration
class BeanConfig {
@Bean
public Address getAddress() {
return new Address("Tashkent", "beruniy");
}
}
Shunday qilib, application ishga tushganda Address classi uchun bean yaratadi.
Xulosa
Shunday qilib, IoC konteyneri tomonidan boshqariladigan barcha ob’ektlar bean deb ataladi.
Bundan tashqari, biz ilovamizda foydalanmoqchi bo’lgan har qanday dependency uchun bean yaratishimiz mumkin, masalan, har qanday uchinchi tomon classi yoki kutubxonasini, biz shunchaki bean qilishimiz va keyin uni o’zimiz xohlagan classga avtomatik ulashimiz mumkin. Uni ishlatish va uning metodlarni bevosita chaqirish imkonini beradi.
Misol uchun:
@Bean
public RestTemplate getResttemplate() {
return new RestTemplate();
}
@Autowired
private RestTemplate restTemplate;
restTemplate.getForEntity("https://www.google.com", String.class);