SpringIOC 容器
一、组件的概念
什么是组件?
常规的三层架构处理请求流程:
划分为组件后:
组件就是所有可以重用的java对象,组件一定是对象,对象不一定是组件
二、Spring 进行组件管理
Spring框架替代了程序员原有的new对象和对象属性赋值的动作
-
组件对象实例化
-
组件属性赋值
-
组件对象之间引用
-
组件对象存活周期管理
我们只需要写配置文件,告诉Spring哪些组件需要它管理,以及他们之间的引用关系
优势:
-
降低组件之间的耦合性,之前需要在类中去 new 另一个类,是强耦合,使用 SpringIOC 容器通过依赖注入机制,让这两个类的依赖关系减弱,降低耦合性
-
提高代码可重用性和可维护性
-
方便配置和管理
-
交给Spring管理的对象,方可享受Spring框架的其他功能
三、SpringIOC 容器
普通容器:只能用来存储,没有其他功能。比如数组、集合等
复杂容器:不仅能存放,还能对内部的数据进行管理,程序中就像 Servlet容器就是复杂容器,创建对象,使用对象,销毁对象。
SpringIOC就是一个复杂容器,不仅可以存储组件,还从内部维护组件的生命周期,从创建到销毁的回调,还能在IOC容器内进行组件功能的扩展,加上事务等。
SpringIOC容器负责实例化、配置和组装bean,通过配置文件的形式获取这些指令。配置文件有三种形式:XML、Java注解、Java代码
SpringIOC容器具体接口和实现类
接口:
BeanFactory 只是规定了一些基本的方法:如何创建存储组件,如何对外 提供组件
ApplicationContext 是 BeanFactory 的子接口,它进行了一些扩展:
-
AOP
-
消息资源处理(用于国际化)
-
web项目的支持
实现类:
ApplicationContext的实现类
-
ClassPathXmlApplicationContext
-
配置文件是 xml 格式
-
放在项目的类路径下(resource或src下)
-
-
FileSystemXmlApplicationContext
-
配置文件是xml
-
放在非项目路径下
-
-
WebApplicationContext
-
web项目对应的ioc容器
-
-
AnnotationConfigApplicationContext
-
配置文件使用的是 java类
-
配置方式有三种:XML、注解、Java类
目前使用较多的是 java类 + 注解
控制反转(IOC)
当应用程序需要一个对象时,不再是应用程序直接创建对象,而是由IOC容器来创建和管理,控制权由应用程序转移到IOC容器中,也就是反转了 控制权
依赖注入(DI)
DI是指在组件之间传递依赖关系的过程中,将依赖关系在容器内部进行处理,这样就不必在应用程序中硬编码对象之间的依赖关系,实现了对象之间的解耦合。也就是之前 把一个对象赋值给另一个对象的操作在IOC容器中进行
IOC和DI 的实现步骤
-
写配置文件
-
实例化 IOC 容器
-
获取 Bean(组件)