JAVA Spring4系列框架图

(Spring4系列架构图)

Core Container核心容器:是Spring框架中最核心的模部分,其他模块都是依赖该模块,是用来存储,管理对象的模块。

AOP:依赖核心容器,是一种编程思想,告诉你程序应该怎么做,可以在不惊动原始程序情况下增强功能。可以理解为在改动源码的情况下在代码之间插入新东西,类似插件。

Aspects:对AOP思想进行的实现。

Data Access/lntegration(数据访问/集成):访问数据

Test:测试

心概念

IoC (Inversion of Control)控制反转:

(控制反转:对象的创建控制权由程序转移到外部,这种思想称为控制反转)

使用对象时,在程序中不要主动使用new产生对象,转换为由外部提供对象。

这样的好处是,不再用程序员去new对象,需要使用的时候由系统提供对象,这样能降低耦合度

比如:

业务层实现

public class BookServiceImpl implements BookService {
private BookDao bookDao = new BookDaoImpl();
public void save() {
bookDao. save();
}

数据层实现

public class BookDaoImpl implements BookDao {
public void save(){
	System.out.println("book dao save ...");stem.out.println("book dao save ...");
}
	}

如上述代码所示,如果数据层需要改动,那么就会连带改动到业务层,就变成了

业务层实现

public class BookServiceImpl implements BookService {
//这里被连带发生了改变
private BookDao bookDao = new BookDaoImp2();
public void save() {
	bookDao. save();
}

数据层实现

public class BookDaoImpl2 implements BookDao {
public void save(){
	//这里发生了改变
	System.out.println("book dao save ...2");
}
	}

所以耦合度偏高,于是IoC 诞生了,对象不再由程序员new,能够有效解耦,减低耦合度。

Spring技术对IoC思想进行了实现,Spring提供了一个容器,叫Ioc容器,IoC容器负责提供对象。

而IoC容器只负责管理对象(Service和Dao),它只负责对象的创建、初始化等一系列工作,被IoC创建或被管理的对象在IoC容器中统称Bean

如果两个对象之间有依赖关系,那么Ioc容器就会进行依赖注入

DI(Dependency Injection)依赖注入

在容器中建立bean与bean之间的依赖关系的整个过程,称为依赖注入

如果两个bean之间存在依赖关系,Ioc容器会将他们绑定(依赖注入)。

这样,在向IoC容器获取bean的时候,就可以直接拿到已经绑好关系的对象