IoC 控制反转
一、什么是Spring框架?
官方解释:Spring框架指的是Spring Framework,它是一个分层的、面向切面的Java应用程序的一站式轻量解决方案;
两个核心:AOP和IoC,这两个核心的简单描述如下:
核心 | 描述 |
---|---|
AOP | 即Aspact Oriented Programming,译为"面向切面编程"。AOP 用来封装多个类的公共行为,将那些与业务无关,却为业务模块所共同调用的逻辑封装起来,减少系统的重复代码,降低模块间的耦合度。另外,AOP 还解决一些系统层面上的问题,比如日志、事务、权限等。 |
IoC | 即Inverse Of Control,译为"控制反转"。指将创建对象的过程交给Spring。 |
本篇主要记录的是:IoC 控制反转
二、控制反转的个人理解
控制反转(IoC)
“控制反转”,即在程序设计中,将对象创建的"控制权"交给Spring的IoC容器,而不是使用new去构造一个对象。传统构建对象的缺点便是代码的耦合度过高,不利于后期的修改与维护,毕竟对于面向对象编程,我个人理解是:尽量杜绝更改程序,而是做到扩展程序。于是在Spring框架中便可以使用XML 配置文件、注解、Java 配置类等方式,对 Java 对象进行定义。在Spring启动时,IoC容器会自动根据对象定义,将这些对象创建并管理起来。这些被IoC创建并管理的对象被称为"Spring Bean"。
依赖注入(DI)
简单来说,依赖关系就是在一个对象中需要用到另一个对象,即对象中存在的一个属性,该属性是另外一个对象。
三、IoC容器的两种实现
BeanFactory
BeanFactory 是 IoC 容器的基本实现,也是 Spring 提供的最简单的 IoC 容器,它提供了 IoC 容器最基本的功能。BeanFactory 采用懒加载(lazy-load)机制,容器在加载配置文件时并不会立刻创建 Java 对象,只有程序中获取(使用)这个对象时才会创建。
注意:BeanFactory 是 Spring 内部使用接口,通常情况下不提供给开发人员使用。
ApplicationContext
ApplicationContext是BeanFactory的子接口,是对BeanFactory的扩展。ApplicationContext 在 BeanFactory 的基础上增加了许多企业级的功能,例如 AOP(面向切面编程)、国际化、事务支持等。
实现类 | 描述 |
---|---|
ClassPathXmlApplicationContext | 加载类路径 ClassPath 下指定的 XML 配置文件,并完成 ApplicationContext 的实例化工作 |
FileSystemXmlApplicationContext | 加载指定的文件系统路径中指定的 XML 配置文件,并完成 ApplicationContext 的实例化工作 |
//自动加载类路径下指定的xml配置文件
ApplicationContext context = new ClassPathXmlApplicationContext("Bean.xml");
//加载指定文件系统路径下指定的xml配置文件
ApplicationContext context = new FileSystemXmlApplicationContext("D:\\eclipe workspace\\spring workspace\\HelloSpring\\src\\Beans.xml");