Spring IoC 容器
Spring 是最受欢迎的企业级 Java 应用程序开发框架,数以百万的来自世界各地的开发人员使用 Spring 框架来创建性能好、易于测试、可重用的代码。
Spring 最认同的技术是控制反转的依赖注入(DI(Dependency Injection))模式,控制反转(IoC(Inversion of Control))是一个通用的概念,它可以用很多的不同的方式去表达,而依赖注入只是其中的一种。
Spring框架的一个关键组件是面向方面的程序设计(AOP),一个程序中跨越多个功能的点被称为横切关注点,这些横切关注点在概念上独立于程序的业务逻辑。有各种各样的常见的很好的关于方面的例子,比如日志记录,声明性事务,安全性,和缓存等。
IoC容器
Spring容器是Spring框架的核心,容器将创建对象,将它们连接在一起,配置并管理它们的整个生命周期从创建到销毁,Spring容器使用依赖注入(DI)来管理组成一个应用程序的组件,这些对象被称为Spring Beans。
通过阅读配置数据提供的指令,容器知道对哪些对象实例化,配置和组装。配置元数据可以通过XML,java注解或者java代码来表示,下图是Spring如何工作的视图.
**IoC容器具有依赖注入功能的容器,它可以创建对象,IoC容器负责实例化,定位,配置应用程序中对象之间的依赖,**即通常是new一个对象的实例,控制权在程序员手上,由程序员控制对象的实例化,而控制反转则是将这一步反过来,由Spring容器来负责new实例对象工作。
Spring提供了以下两种不同类型的容器:
BeanFactory是基础类型的IoC容器,它提供了完整的IoC服务支持,简单来说BeanFactory就是一个管理bean的工厂,它主要负责初始化各种Bean,并且调用它们的生命周期的方法。
ApplicationContext 容器包括 BeanFactory 容器的所有功能,所以通常建议超过 BeanFactory。BeanFactory 仍然可以用于轻量级的应用程序,如移动设备或基于 applet 的应用程序,其中它的数据量和速度是显著。
ApplicationContext是BeanFactory的子接口,也被称为应用上下文,,是另一种常用的 Spring 核心容器。它与BeanFactory一样由org.springframework.context. ApplicationContext接口定义的,不仅包含了BeanFactory所有功能,还添加了对国际化,资源访问,事件传播等方面的支持。