「Spring专题」1、设计理念与整体架构

Spring是目前最受欢迎的框架之一,今天我们就开始从宏观和微观两个角度去解析一下Spring。从Spring的使用以及源码两条线路出发。Let's go!

一、设计目标

答:我们从设计者的角度出发,首先Spring是一个一站式的轻量级应用开发框架(平台)。这个平台为开发者提供:

1、支持POJO和使用JavaBean的开发方式,使应用面向接口开发,充分支持面向对象的设计方法。这样开发的入门、测试、应用部署得到了简化。

2、使用Spring的IoC容器,可以对各种对象之间的耦合关系实现一个文本化、外部化的工作。完成对象间的解耦:原来的对象-对象的关系,转化为对象-IoC容器-对象的关系。

3、通过AOP,以动态和非入侵的方式来增强服务功能。

4、在IoC和AOP两个模块的两个模块支持下,可以根据使用情况动态扩展到Spring体系中(只要依据IoC与AOP所约定好的特定模式)。基本来说,Spring体系中已经包括我们在开发中经常用到的许多服务了。比如事务处理、JDBC、ORM等等。

二、整体架构

Spring 架构图

很多人看这个图都头大。但是我们还是要慢慢分析一下。有助于我们整体把握Spring。

Spring IoC:最下面这层就是IoC容器了,包含最基本的BeanFactory的接口与实现。它是工厂模式的实现。BeanFactory 使用控制反转 (IOC) 模式将应用程序的配置和依赖性规范与实际的应用程序代码分开。另外Spring还设计了ApplicationContext应用上下文供用户使用。

Spring AOP:最左边就是Spring AOP了,通过配置管理特性,Spring AOP 模块直接将面向方面的编程功能集成到了 Spring 框架中。所以,可以很容易地使 Spring 框架管理的任何对象支持 AOP。Spring集成了AspectJ作为AOP的特定实现,同时还在JVM动态代理/CGLIB的基础上,实现了一个AOP框架。

Spring Context:Spring Context是一个配置文件,向 Spring 框架提供上下文信息。Spring 上下文包括企业服务,例如 JNDI、EJB、电子邮件、国际化、校验和调度功能。

三、Spring的价值

1、Spring 是一个非入侵性框架,其目标是使应用程序代码对框架的依赖最小化,应用代码可以在没有Spring或者其他容器中进行。

2、Spring提供了一个一致性的编程模型,使应用直接使用POJO开发,从而可以与运行环境隔离开。

3、Spring推动应用的设计风格像面向对象及面向接口编程。提高代码的重用性与可测试性。