1.DI和IOC
依賴注入(Dependency Injection)還是控制反轉(Inversion of Conctrol)
bean通過依賴注入,注冊到spring容器里面。spring容器通過控制反轉,調用bean。
?
2.DI的方法
這里網上很多配置注入,構造方法注入,類參數注入,get/set注入等等,一點總結能力都沒有啊。
其實就兩種,配置注入和方法注入。java8支持多注解(annotations)之后,方法注入多了靈活的注解注入。
?
3.bean的作用域
singleton:單例模式,在整個Spring IoC容器中,使用singleton定義的bean將只有一個實例;
prototype:原型模式,每次通過容器的getBean方法獲取prototype定義的Bean時,都將產生一個新實例;
request:每次HTTP請求中,使用request定義的bean都將產生一個新實例,只有在web應用程序使用Spring時,該作用域才有效;
session:每次HTTP請求中,使用session定義的bean都將產生一個新實例,只有在web應用程序使用Spring時,該作用域才有效;
global session:和session類似,但是只適用于portlet(另一個mvc框架),若在springmvc里面就是session的效果。
?
4.獲取spring容器
通過上面說的request,session之類的xxxxContext向上獲取spring容器(ApplicationContext);
或者直接實現ApplicationContextAware接口
或者直接通過配置獲取
?
ApplicationContext ctx = new ClassPathXmlApplicationContext("bean.xml");
?
?
PS.都不建議獲取spring容器,因為提高了耦合,污染了代碼。
并且通過配置獲取,會將初始化所有Bean實例。
?
5.spring的裝配
@Autowire 自動裝配。
@Qualifier 精確裝配。
?