一.基础准备
IoC是什么
Ioc—Inversion of Control,即“控制反转”,不是什么技术,一种设计思想。 传统的Java编程中,如果应用程序需要依赖对象,需要通过new来实现。在IoC中,所有的设计好的对象都是通过容器进行控制的。下面需要理解几个问题:
- 谁控制谁,控制什么:IoC容器控制对象的创建。控制什么,主要是控制外部资源的获取(不仅限于对象)。
- 为何是反转:传统应用程序是由我们自己在对象中主动控制去直接获取依赖对象,也就是正转;而反转则是由容器来帮忙创建及注入依赖对象。为何是反转?因为容器帮我们查看和注入依赖对象,对象被动的接受依赖对象。
DI是什么
DI—Dependency Injection,即“依赖注入”:是组件之间依赖关系由容器在运行期决定,形象的说,即由容器动态的将某个依赖关系注入到组件之中。通过依赖注入我们可以简单的通过配置或者是注解,即可为目标对象注入需要的资源,完成自身的业务逻辑。
Bean的概念
由IoC容器管理的组成应用程序的对象就叫Bean,Bean是由Spring容器(IoC容器)进行初始化,装配以及管理的对象。
二.Spring入门
- 详解IoC容器
在spring中IoC容器的代表就是org.springframework.beans中的BeanFactory接口,BeanFactory提供了IoC容器的基本功能;在org.springframework.context下的ApplicationContext扩展了BeanFactory(BeanFactory继承了ListableBeanFactory接口,而ListableBeanFactory继承了BeanFactory接口),还提供了与Spring AOP的集成、国际化处理、事件的传播和提供不同层次的context实现。综上:BeanFactory提供了IoC容器的基本功能,而ApplicationContext提供了更多企业级功能的支持。
BeanFactory容器一览:
XmlBeanFactory:BeanFactory实现,提供基本的IoC容器功能,可以从classpath或文件系统等获取资源;
|
|
ClassPathXmlApplicationContext:ApplicationContext实现,从classpath获取配置文件;
|
|
FileSystemXmlApplicationContext:ApplicationContext实现,从文件系统获取配置文件。
|
|
- IoC容器执行流程
- 首先是在配置文件中声明Bean的定义,为Bean配置元数据。
- 由IoC容器的Bean Reader读取并解析配置文件,通过BeanDefinition配置元数据,IoC容器根据BeanDefinition进行实例化、配置以及组装Bean。
- 由应用程序实例化IoC容器,得到Bean对象。
- 小案例测试
- 创建接口
|
|
- 创建实现类
|
|
- 配置文件
|
|
- 编写测试代码
|
|
- 小结
在测试代码中除了程序的入口,其他的地方没有Spring的任何组件,也没有实现Spring框架的任何接口。在代码编写完全是面向接口编程的,使用时不需要知道接口的实现类,需要修改实现类时,可以通过配置文件进行修改。