MS Lesson6: IoC, DI, Spring Context, ApplicationContext
1. IoC - Inversion of Control
- Əvvəl (klassik Java): sən obyektləri özün yaradırsan (new Service(), new Repo()), kim kimdən asılıdır hamısını özün bağlayırsan.
- IoC-də: bu nəzarəti container-ə verirsən (Spring). O obyektləri özü yaradır və bağlayır.
- əvvəl: sən idarə edirdin
- indi: framework idarə edir
2. DI - Dependency Injection
- TestController-a StudentIdGeneratorService lazımdır.
- Constructor ilə veririk:
- new TestController(service) (unit testdə)
- və ya Spring onu avtomatik verir (runtime-da)
- constructor injection (ən yaxşı)
- setter injection
- field injection
3. Spring Context
- @Component, @Service, @Repository, @Controller, @Configuration tapır
- bunlardan bean yaradır
- DI edir
- bean lifecycle idarə edir (init, destroy)
- config/property binding edir
4. ApplicationContext
- BeanFactory daha əsas/sadə container API-dir
- ApplicationContext onun üstündə daha geniş funksionallıq verir:
- event publishing
- internationalization
- AOP/auto-config ilə daha tam inteqrasiya
- environment/profiles və s.
- IoC = prinsip (idarəni framework-ə vermək)
- DI = mexanizm (dependency-ni inject etmək)
- ApplicationContext (Spring Context) = bunu edən container
- Spring Context = ümumi danışıq adıdır.
- ApplicationContext = bunun real, texniki adıdır (Spring-də ən çox istifadə edilən container interfeysi).
- “maşın” deyəndə ümumi addır
- “Toyota Corolla” deyəndə konkret modeldir
- “Spring Context” = maşın
- “ApplicationContext” = konkret model (ən çox işlənən)
Applicationda olan butun bean-lari gosterir
@Bean
ApplicationRunner runner(ApplicationContext ctx) {
return args -> {
String[] names = ctx.getBeanDefinitionNames();
Arrays.sort(names);
for (String name : names) {
System.out.println(name);
}
};
}
Комментарии
Отправить комментарий