总体架构

Spring 框架基本涵盖了企业级应用开发的各个方面,它由二十多个模块组成。

总体架构 百科 总体框架和基本内容_总体架构

Core Container

Core Container 由spring-core 、spring-beans 、spring-context 、spring-context-support和spring-expression ( Spring Expression Language )模块组成。

spring-corespring-beans 模块提供框架的基础部分,包括IoC 和Dependency Injection 功能。BeanFactory 是一个复杂工厂模式的实现,无须编程就能实现单例,并允许开发人员将配置和特定的依赖从实际程序逻辑中解耦。

Context ( spring-context )模块建立在Core 和Beans 模块提供的功能基础之上,它是一种在框架类型下实现对象存储操作的手段,有一点像JNDI 注册。Context 继承了Beans 模块的特性,并且增加了对国际化的支持(如用在资源包中)、事件广播、资源加载和创建上下文(如一个Servlet容器) 。Context 模块也支持如EJB 、JMX 和基础远程访问的Java EE 特性。ApplicationContext 接口是Context 模块的主要表现形式。spring-context-support 模块提供了对常见第三方库的支持,以便集成到Spring应用上下文,如缓存(EhCache 、JCache ) 、调度( CommonJ、Quartz )等。

spring-expression 模块提供了一种强大的表达式语言,用来在运行时查询和操作对象图。它是作为JSP 2.1 规范所指定的统一表达式语言的一种扩展。这种语言支持对属性值、属性参数、方法调用、数组内容存储、收集器和索引、逻辑和算数的操作及命名变量, 并且通过名称从Spring的控制反转容器中取回对象。表达式语言模块还支持列表投影、选择和通用列表聚合。

AOP&Instrumentation

spring-aop模块提供AOP(面向切面编程)的实现,从而能够实现方法拦截器和切人点完全分离代码。使用源码级别元数据的功能,也可以在代码中加入行为信息,在某种程度上类似于.NET属性

单独的spring-aspects 模块提供了集成使用AspectJ。

spring-instrument 模块提供了类instrumentation的支持和在某些应用程序服务器使用类加载器实现。

spring-instrument-tomcat 用于TomcatInstrumentation代理。

Message

自SpringFramework4 版本开始提供spring-messaging 模块,主要包含从Spring Integration 项目中抽象出来的,如Message 、MessageChannel 、MessageHandler 及其他用来提供基于消息的基础服务。

该模块还包括一组消息映射方法的注解,类似基于编程模型中的Spring MVC 的注解。

Data Access

Data Access/Integration由JDBC 、ORM 、OXM 、JMS 和Transaction 模块组成。

①spring-jdbc模块提供了一个JDBC 抽象层,这样开发人员就能避免进行一些烦琐的JDBC编码和解析数据库供应商特定的错误代码。

②spring-tx模块支持用于实现特殊接口和所有POJO 类的编程及声明式事务管理。

③spring-orm模块为流行的对象关系映射API提供集成层,包括JPA和Hibernate。使用spring-orm模块,可以将这些O/R映射框架与Spring提供的所有其他功能结合使用, 如前面提到的简单的声明式事务管理功能。

④spring-oxm模块提供了一个支持Ojbect/XML 映射实现的抽象层,如JAXB 、Castor 、JiBX和XStream。

⑤spring-jms模块包含用于生成和使用消息的功能。从Spring Framework 4.1 开始,它提供了与spring-messaging 的集成。

Web

Web层由spring-web 、spring-webmvc 、spring-websocket 和spring-webftux 组成。

①spring-web 模块提供了基本的面向Web开发的集成功能,如文件上传及用于初始化IoC容器的Servlet 监昕和Web 开发应用程序上下文。它也包含HTTP客户端及Web相关的Spring 远程访问的支持。

②spring-webmvc 模块(也称Web Servlet 模块)包含Spring 的MVC 功能和REST 服务功能。

③spring-websocket 模块是基于WebSocket 协议通信的程序开发。

④spring-webftux 模块是Spring 5 新添加的支持响应式编程的Web开发框架。

Test

spring-test模块支持通过组合JUnit 或TestNG 来实现单元测试和集成测试等功能。它不仅提供了Spring ApplicationContexts 的持续加载,井能缓存这些上下文,而且提供了可用于孤立测试代码的模拟对象( mock objects )。

Spring设计模式

在Spring 框架设计中,广泛使用了设计模式。Spring 使用以下设计模式使企业级应用开发变得简单和可测试。

① Spring 使用POJO 模式的强大功能来实现企业应用程序的轻量级和最小侵入性的开发。

② Spring 使用依赖注入模式(DI 模式)实现松耦合,并使系统可以更加面向接口编程。

③ Spring 使用Decorator 和Proxy 设计模式进行声明式编程。

④ Spring 使用Template 设计模式消除样板代码。