Spring是一个以IoC(Inversion of Control,控制反转)和AOP(AspectOriented Programming)为内核的框架。IoC是Spring的基础。
在面向对象传统编程方式中,获取对象的方式通常是用new关键字主动创建一个对象。
Spring的IoC:对象的生命周期由Spring框架提供的IoC容器来管理,直接从IoC容器中获取一个对象,控制权从应用程序交给了IoC容器。
DI是Dependency Inject的缩写,译为“依赖注入”。所谓依赖注入,就是由IoC容器在运行期间动态地将某种依赖关系注入对象之中。
IoC/DI的实现
Spring框架提供的两种核心容器分别是BeanFactory和ApplicationContext。
IoC/DI通常有setter注入和构造方法注入两种实现方式。
1.Spring核心容器
Spring框架的两个最基本和最重要的包是org.springframework.beans.factory(该包中的主要接口是BeanFactory)和org.springframework.context(该包中的主要接口是ApplicationFactory)。
Spring IoC框架的主要组件有Beans、配置文件applicationContext.xml、BeanFactory接口及其相关类、ApplicationContext接口及其相关类。
在Spring中对Bean的管理是在配置文件中进行的。
在Spring中对Bean的管理是在配置文件中进行的
BeanFactory采用了工厂设计模式,即Bean容器模式,负责读取Bean的配置文件,管理对象的生成、加载,维护Bean对象与Bean对象之间的依赖关系,负责Bean的生命周期。对于简单的应用程序来说,使用BeanFactory就已经足够管理Bean了,在对象的管理上可以获得许多便利性。
org.springframework.beans.factory.xml.XmlBeanFactory是BeanFactory常用的实现类,根据配置文件中的定义装载Bean。
BeanFactory的常用方法如下:
getBean(String name):可根据Bean的id生成该Bean的对象。
getBean(String name,Class requiredType):可根据Bean的id和相应类生成该Bean的对象。
ApplicationContext接口提供高级功能的容器,基本功能与BeanFactory很相似,但它还有以下功能:
提供访问资源文件更方便的方法。
支持国际化消息。 提供文字消息解析的方法。
可以发布事件,对事件感兴趣的Bean可以接收到这些事件。
ApplicationContext接口的常用实现类有以下3个。
FileSystemXmlApplicationContext:从文件系统中的XML文件加载上下文中定义的信息。 ClassPathXmlApplicationContext:从类路径中的XML文件加载上下文中定义的信息,把上下文定义的文件当成类路径资源。
XmlWebApplicationContext:从Web系统中的XML文件加载上下文中定义的信息
2.IoC/DI实现方式
一种是属性setter()方法注入;另一种是构造方法注入。