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 精确装配。