(一)Spring是什么?
· Spring 为简化企业级应用开发而生. 使用 Spring 可以使简单的 JavaBean 实现以前只有 EJB 才能实现的功能.
· 具体描述 Spring:
- 轻量级:Spring 是非侵入性的 - 基于 Spring 开发的应用中的对象可以不依赖于 Spring 的 API;
- 依赖注入(DI — dependency injection、IOC);
- 面向切面编程(AOP — aspect oriented programming);
- 容器: Spring 是一个容器, 因为它包含并且管理应用对象的生命周期;
- 框架: Spring 实现了使用简单的组件配置组合成一个复杂的应用. 在 Spring 中可以使用 XML 和 Java 注解组合这些对象;
- 一站式:在 IOC 和 AOP 的基础上可以整合各种企业应用的开源框架和优秀的第三方类库 (实际上 Spring 自身也提供了展现层的 SpringMVC 和 持久层的 Spring JDBC);
(二)Spring如何降低Java开发的复杂性
为了降低Java开发的复杂性,Spring采取了一下四种策略: - 基于POJO的轻量级和最小侵入式编程;
- 通过依赖注入和面向接口实现松耦合;
- 基于惯例和切面进行声明式编程;
- 通过切面和模板减少样板式代码;
(三)Spring模块
这些模块依据其所属的功能可以划分为6类不同的功能,如下图所示:
让我们逐一浏览Spring的模块,看看它们是如何构建起Spring整体蓝图的.
Spring核心容器 - 容器是Spring框架最核心的部分,它管理着Spring应用中bean的创建,配置和管理.在该模块中,包括了Spring工厂,它为Spring提供了DI功能.基于bean工厂,我们还会发现有多种Spring应用上下文的实现,每一种都提供了配置Spring的不同方式.
- 除了Bean工厂和应用上下文,该模块也提供了许多企业服务,例如E-mail,JNDI访问,EJB集成和调度.所有的Spring模块都构建于核心容器之上.
数据访问与集成 - 使用JDBC编写代码通常会导致大量的样板式代码,例如获得数据库的连接,创建语句,处理结果集到最后关闭数据库连接.Spring的JDBC和DAO(Data AccessObject)模块抽象了这些样板式代码,使我们的数据库代码变得简单明了,还可以避免因为关闭数据库连接而引发的问题.该模块在多种数据库服务的错误消息之上构建了一个语义丰富的异常层,以后再也不需要解释那些隐晦专有的SQL错误消息了!
- 对于那些更喜欢ORM(Object Relational Mapping)工具而不愿意直接使用JDBC的开发者,Spring提供了ORM模块.Spring的ORM模块建立在对DAO的支持之上,并为多个ORM框架提供了一种构建DAO的简便方式.Spring没有尝试去创建自己的ORM解决方案,而是对许多流行的ORM框架进行了集成,包括Hibernate,Java Persisterence API(JPA),Java Data Object和iBATIS SQL Maps.Spring的 事物管理支持所有的ORM框架以及JDBC.
- 本模块同样包含了在JMS(Java Message Service)之上构建的Spring抽象层,它会使用消息以异步的方式与其他应用集成.从Spring 3.0开始,本模块还包含对象到XML映射的特性,它最初是Spring Web Service项目的一部分.
除此之外,本模块会使用Spring AOP模块为Spring应用中的对象提供事物管理服务.
Web与远程调用MVC(Model-View-Controller)模式是一种普遍被接受的构建Web应用的方法,它可以帮助用户将界面逻辑与应用逻辑分离。Java有许多MVC框架,如Apache的Struts,JSF,WebWork和Tappestry等.虽然Spring能够与多种流行的MVC框架进行集成,但它的web和远程调用模块自带了一个强大的MVC框架,有助于在web层提升应用的松耦合水平.
- 除了面向用户的web应用,该模块还提供了多种创建与其他应用交互的远程调用方案.Spring远程调用功能集成了RMI(Remote Method Invocation),Hessian,Burlap,JAX-WS,同时Spring还自带了一个远程调用框架:Http invoker.Spring还提供了暴露和使用REST API的良好支持.
Instrumentation
Spring 的Instrumentation模块提供了为JVM添加代理(agent)的功能.具体来讲,它为Tomcat提供了一个织入代理,能够为Tomcat传递类文件,就像这些文件是被类加载器加载的一样.
测试
Spring提供了测试模块以致于Spring应用的测试.
Spring Portfolio
Spring Web Flow
- Spring Web Flow的主页(http://projects.spring.io/Spring-webflow)
Spring Web Service
- Spring Web Service的相关资料:http://docs.spring.io/Spring-ws/site
Spring Security
利用Spring AOP,Spring Security 为Spring应用提供了声明式的安全机制.
Spring Integration
- Spring Integration提供了多种通用应用集成模式的Spring声明式风格实现
Spring Batch
- 开发一个批处理应用,你可以通过Spring Batch,使用Spring强大的面向POJO的编程模型.
Spring Data
Spring Data使得在Spring中使用任何数据库都变得非常容易.
Spring Social
Spring的一个社交网络扩展模块
Spring Mobile
Spring Mobile是Spring MVC新的扩展模块,用于支持移动web应用开发.
Spring for Android
Spring Boot