spring ioc的理解
目录
一 IOC的概述
Ioc - Inversion of Control,即“控制反转”,不是什么技术,而是一种设计思想。所谓的控制反转,就是把原来的我们代码里面需要对象创建,依赖的代码,反转给容器来帮忙实现。那么我们必须需要创建一个容器,同时需要一种描述让容器知道需要创建的对象与对象的关系,这个描述一般就是我们看到的可配置文件。Ioc容器最主要是为了完成对象的创建和依赖的管理注入等等。
二 IOC的原理
ioc就是容器来代理,Spring 中提供了两种Ioc容器:
1.BeanFactory
2.ApplicationContext
这两个容器间的关系如下图:
可以看出,ApplicationContext是BeanFactory的子类,所以,ApplicationContext相当于BeanFactory强大的应用,。
他们的区别是:
BeanFactory。基础类型Ioc容器,提供完整的Ioc服务支持。如果没有特定指定,默认采用延迟初始化策略。只有当客户对象访问容器的某个被管对象的时候。才对该被管对象进行初始化以及依赖注入操作。所以,相对来说,容器启动初期速度很快,所需要的资源有限。对于资源有限,并且功能要求不是很严格的场景,BeanFactory是比较Ioc容器选择。
AppicationContext。ApplicationContext在BeanFactory基础上构建,是相对比较高的容器实现,除了拥有BeanFactory的所有支持。ApplicationContext还有其他的高级的特性,比如事件发布,国际化信息支持等。ApplicationContext所管理的对象,在改容器启动初始化后,默认全初始化并绑定完成了。所以相对于BeanFactory,ApplicationContext要求更多系统资源,容器启动的时间也更加长。ApplicationContext更加适合在资源充足并要求多功能的场景中。