什么是Spring
Spring 是目前主流的 Java 开发框架,是 Java 世界最为成功的框架。该框架是一个轻量级的开源框架,具有很高的凝聚力和吸引力。Spring 框架不局限于服务器端的开发。 从简单性、可测试性和松耦合的角度而言,任何 Java 应用都可以从 Spring 中受益。Spring 框架还是一 个超级粘合平台,除了自己提供功能外,还提供粘合其他技术和框架的能力。
Spring体系结构
EL = Expression Language 表达式语言
SpEL = Spring Expression Language Spring表达式语言
Data Access/Integration
Data Access/Integration表示数据访问/集成层,包含了JDBC、ORM、OXM、JMS、Transactions模块。
Web
Spring 的 Web 层包括 Web、Servlet、WebSocket 和 Portlet 组件
Core Container
Spring 的核心容器是其他模块建立的基础,由 Beans 模块、Core 核心模块、Context 上下文模块和 SpEL 表达式语言模块组成,没有这些核心容器,也不可能有 AOP、Web 等上层的功能。
Beans 模块
提供了框架的基础部分,包括控制反转和依赖注入。
Core 核心模块
封装了 Spring 框架的底层部分,包括资源访问、类型转换及一些常用工具类。
Context 上下文模块
建立在 Core 和 Beans 模块的基础之上,集成 Beans 模块功能并添加资源绑定、数据验证、国际化、Java EE 支持、容器生命周期、事件传播等。ApplicationContext 接口是上下文模块的焦点。
SpEL 模块
提供了强大的表达式语言支持,支持访问和修改属性值,方法调用,支持访问及修改数组、容器 和索引器,命名变量,支持算数和逻辑运算,支持从 Spring 容器获取 Bean,它也支持列表投 影、选择和一般的列表聚合等。
AOP、Aspects、Instrumentation和Messaging
AOP 模块
提供了面向切面编程实现,提供比如日志记录、权限控制、性能统计等通用功能和业务逻辑分离的技术,并且能动态的把这些功能添加到需要的代码中,这样各司其职,降低业务逻辑和通用功 能的耦合。
Aspects 模块
提供与 AspectJ 的集成,是一个功能强大且成熟的面向切面编程(AOP)框架。
Instrumentation 模块
提供了类工具的支持和类加载器的实现,可以在特定的应用服务器中使用。 messaging 模块 Spring 4.0 以后新增了消息(Spring-messaging)模块,该模块提供了对消息传递体系结构和协 议的支持。
Test模块
Test 模块
Spring 支持 Junit 和 TestNG 测试框架,而且还额外提供了一些基于 Spring 的测试功能,比如在 测试 Web 框架时,模拟 Http 请求的功能。