框架篇

  • 1. 什么是框架
  • 2. 为什么使用框架
  • 3. Spring
  • 4. Spring Framework
  • 4.1 Spring Framework 体系结构
  • 4.2 Core Container 核心容器
  • 4.2.1 当前问题
  • 4.2.1 IOC
  • 4.2.2 DI
  • 4.3 整合数据层
  • 4.4 AOP 面向切面编程
  • 4.5 事务


1. 什么是框架

   在我们生活中,也经常使用到框架这个词,比如修建一个房子,我们可以先将外层的框架搭建出来,然后再去填充里面的细节。Java 中的框架其实就是在开发者进行开发时,所使用的一系列预编写的代码,有着模板的作用,开发者根据自己的需求来填充该模板,从而达到目的。框架可以反复使用,这样开发者就不用每次从头开始,为开发工作节省了很多时间。

2. 为什么使用框架

   · 使用框架技术,可以大大提高开发效率。
   · 减少了底层技术的实现,让开发者更专注于具体业务上。
   · 规范了开发者的编码风格,降低了开发难度。
   · 使开发过程更加清晰,便于维护。

3. Spring

   Spring 是 Java EE 编程领域的一款轻量级的开源框架,它为了简化 Java 企业级应用程序的开发难度和周期。Spring 技术是 JavaEE 开发必备的技能,它降低了企业级开发的复杂性 (简化开发) ,还可以高效整合其他技术,提高企业级应用开发与运行效率 (框架整合)
   Spring 并不是单一的一门技术,它发展到今天已经形成了一种开发的生态圈,提供了若干个项目,分别用于完成特定的功能,例如 Spring Framework、Sprint Boot、Spring Cloud 等。首先要学习的是 Spring Framework,它是 Spring 的基础。

4. Spring Framework

   Spring Framework 是 Spring 大家族中最最最基础的项目,是其他项目的根基,因此我们首先要重点学习它。

4.1 Spring Framework 体系结构

Java 总线框架 java框架的原理_依赖关系


   · Data Access :数据访问

   · Data Integration : 数据集成

   · Web :Web 开发

   · AOP :面向切面编程

   · Aspects : AOP 思想实现

   · Core Container :核心容器

   · Test :单元测试与集成测试

4.2 Core Container 核心容器

4.2.1 当前问题

   在我们目前编写的代码中,耦合度普遍偏高,例如:

Java 总线框架 java框架的原理_开发语言_02

   如上所示,如果现在需要更改数据层,那么业务层中的代码也需要进行修改,导致耦合度偏高。为了解决这一问题,我们在使用对象时,不用在程序中主动使用 new 创建对象,转换为由外部提供对象。

public class XxxServiceImpl implements XxxService {
	private XxxDao xxxDao;	//对象由外部提供
	public void method() {
		xxxDao.method();
	}
}

   如果直接这样写,程序必然会出错,因为我们并没有对所需对象进行实例化。因此引入了一种新的思想,控制反转(IOC),也就是将对象的创建控制权由程序转移到外部。

4.2.1 IOC

   IOC(Inversion of Control),控制反转,在使用对象时,由程序主动 new 创建对象转换为由外部提供对象,此过程中对象创建控制权由程序转换到外部,此思想称为控制反转。

   Spring 技术对该思想进行了实现,Spring 提供了一个 IOC 容器,用来存放程序所需要的对象,扮演了上文所说的“外部”这个角色。IOC 容器负责对象的创建、初始化等一系列工作,被创建或被管理的对象在 IOC 容器中统称为 Bean。

   我们还需要考虑 Service 执行时依赖于 Dao,由于 service 对象和 dao 对象都存在于 IOC 容器中,IOC 容器可以将二者进行绑定,从而解决该问题,这又引入了一种新的思想,依赖注入(DI),也就是在容器中建立 bean 与 bean 之间的依赖关系的整个过程。

Java 总线框架 java框架的原理_spring_03

4.2.2 DI

   DI(Denpendency Injection),依赖注入,在对象创建的过程中,根据对象间的依赖关系,将它依赖的对象注入到当前对象中。
   很多同志不理解依赖关系是什么,简单的来说,就是在一个对象中需要用到另一个对象,也就是在定义一个类时存在一个属性,该属性是另外一个类的对象,我们称之为依赖关系。例如:

public class Basketball {
	Person jordan;
}

   如上,我们可以理解为:Basketball 的对象依赖于 jordan。
小结:
目标:充分解耦
· 使用 IOC 容器管理 bean(IOC)
· 在 IOC 容器内将有依赖关系的 bean 进行关系绑定(DI)
最终效果:
· 使用对象时不仅可以直接从 IOC 容器中获取,并且获取到的 bean 已经绑定了所有依赖关系。

4.3 整合数据层

4.4 AOP 面向切面编程

4.5 事务