9021年了,現(xiàn)在重學(xué)spring感覺比較晚了,但是好多概念要么忘了,要么沒學(xué)過?,F(xiàn)在只好重頭過一遍。9021年了,直接看注解模式,xml估計也沒人用了。
IOC(DI:dependency injection)控制反轉(zhuǎn)(依賴注入)
核心的就是bean和bean容器,怎么說?
通過各種配置來去定義bean如何實例化,最終bean容器通過你的配置幫你實例化bean。
舉例:
現(xiàn)在需要調(diào)用A的getName方法
正常使用:
Class A{
public String getName(){
return "AAA";
}
}
.....
A a = new A();
a.getName();
spring下呢?
@Bean
Class A{
public String getName(){
return "AAA";
}
}
@Autowired
A a;
a.getName();
如上,將A注冊為Bean,當(dāng)看到@Autowired時,bean容器會幫你實例化A。
注解下Bean的加載過程。
AnnotationConfigApplicationContext也是一個 BeanDefinitionRegistry。
調(diào)用ClassPathBeanDefinitionScanner.doScan或者AnnotatedBeanDefinitionReader.register去解析
中將注解的Bean統(tǒng)一的由BeanDefinitionRegistry(也就是AnnotationConfigApplicationContext)管理。
最終會調(diào)用getBean去實例化。