一、Spring是什么?
Spring是分层的Java SE/EE 应用一站式的轻量级开源框架。由Rod Johnson及其团队SpringSource开发并运作。2013年12月,SpringSource团队发布Spring Framework 4.0正式版本,后续文章默认基于此版本。
二、Spring体系结构
1、Spring 核心框架按所属功能可以划分为5个主要模块:
1.1 Ioc(Inversion of Control 控制反转)
Spring核心模块实现了IoC的功能,它将类与类之间的依赖从代码中脱离出来,用配置的方式进行依赖关系描述,由IoC容器负责依赖类之间的创建、拼接、管理、获取等工作。BeanFactory接口是 Spring框架的核心接口,它实现了容器许多核心的功能。
Context模块构建于核心模块之上,扩展了 BeanFactory的功能,添加了i8n国际化、Bean生命周期控制、框架事件体系资源加载透明化等多项功能。此外,该模块还提供了许多企业级服务的支持,如邮件服务、任务调度、JNDI获取、EJB集成、远程访问等。 ApplicationContext是 Context模块的核心接口。
1.2 AOP(Aspect Oriented Programming 面向切面编程)
AOP是继OOP之后,对编程设计思想影响极大的技术之一AOP是进行横切逻辑编程的思想,它开拓了考虑问题的思路。在AOP模块里, Spring提供了满足 AOP Alliance规范的实现,还整合了 Aspect这种AOP语言级的框架。在 Spring里实现AOP编程有众多选择。java5.0引入java.lang. instrument,允许在JVM启动时启用一个代理类,通过该代理类在运行期修改类的字节码,改变一个类的功能,从而实现AOP的功能。
2、Spring子项目
子项目名称 | 子项目介绍 |
---|---|
Spring IO Platform | Spring是可集成的、构建现代化应用的版本平台。 SpringO是模块化的、企业级的分布式 Spring Platform系统,包括一系列依赖,使得开发者仅能对自己所需的部分进行完全的部署控制 |
Spring Boot | Spring应用快速开发工具,用来简化 Spring应用开发过程 |
Spring XD | Spring XD(eXtreme Data,极限数据)是 Pivotal的大数据产品。它结合了 Spring Boot和 Grails,组成 Spring IO平台的执行部分 |
Spring Cloud | Spring Cloud为开发者提供了在分布式系统(如配置管理、服务发现、断路器、智能路由、微代理、控制总线、一次性 Token、全局锁、决策竞选、分布式会话和集群状态中操作的开发工具。使用 Spring Cloud,开发者可以快速实现上述这些模式 |
Spring Data | Spring Data是为了简化构建基于 Spring框架应用的数据访问实现,包括非关系数据库、Map-Reduce框架、云数据服务等:另外,也包含对关系数据库的访问支持 |
Spring Integration | 为企业数据集成提供了各种适配器,可以通过这些适配器来转换各种消息格式,并帮助 Spring应完成与企业应用系统的集成 |
Spring Batch | Spring Batch是一个轻量级的完整批处理框架,旨在帮助应用开发者构建一个健壮、高效的企业级批处理应用(这些应用的特点是不需要与用户交互,重复的操作量大,对于大容量的批量数据处理而言,这些操作往往要求较高的可靠性) |
Spring Security | 是一个能够为基于 Spring的企业应用系统提供声明式的安全访问控制解决方案的安全框架。它提供了一组可以在 Spring应用上下文中配置的Bean,充分利用 Spring IoC和AOP功能,为应用系统提供声明式的安全访问控制功能,减少了为企业系统安全控制编写大量重复代码的工作 |
Spring Hateoas | 是一个用于支持实现超文本驱动的 REST Web服务的开发库,是 Hateoas的实现 Hateoas(Hypermedia as the engine of application state)是REST架构风格中最复杂的约束,也是构建成熟REST服务的核心。它的重要性在于打破了客户端和服务器之间严格的契约,使得客户端可以更加智能和自适应,而REST服务本身的演化和更新也变得更加容易 |
Spring Social | 是 Spring框架的扩展,用来方便开发Web社交应用程序,可通过该项目来创建与各种社交网站的交互,如 Twitter、Facebook、 LinkedIn和 Triplt等 |
Spring AMQP | Spring AMQP是基于 Spring框架的AMQP消息解决方案,提供模板化的发送和接收消息的抽象层,提供基于消息驱动的POJO。这个项目支持Java和NET两个版本。 Spring Source旗下的 Rabbit MQ(Erlang语言开发)就是一个开源的基于AMQP的消息服务器 |
Spring for Android | Spring for Android为Android终端开发应用提供 Spring的支持,它提供了一个在 Android应用环境中工作、基于Java的REST客户端 |
Spring Mobile | Spring Mobile是基于Spring MVC构建的,为移动终端的服务器应用开发提供支持。比如,使用 Spring Mobile可以在服务器端自动识别连接到服务器的移动终端的相关设备信息,从而为特定的移动终端实现应用定制 |
Spring Web Flow | Spring Web Flow(SWF)一个建立在Spring MVC基础上的Web页面流引擎。随着其自身项目的发展, Web Flow比原来更为丰富,SWF定义了一种特定的语言来描述页面流。其目标是成为管理Web应用页面流程的最佳方案。当你的应用需要复杂的导航控制,如向导,在一个比较大的事务过程中指导用户经过一连串的步骤的时候,SWF是一个很好的解决方案框架 |
Spring Web Services | Spring Web Services(Spring WS)是基于Spring框架的Web服务框架,主要侧重于基于文档驱动的Web服务,提供SOAP服务开发,允许通过多种方式创建Web服务 |
Spring LDAP | Spring LDAP是一个用于操作LDAP的Java框架,类似于 Spring JDBC提供了 JdbcTemplate 方式来操作数据库。这个框架提供了一个 LdapTemplater操作模板,可帮助开发人员简化lookingup、 closing contexts、 encoding/decoding values、 filters等操作 |
Spring Session | Spring Session致力于提供一个公共基础设施会话,支持从任意环境中访问一个会话。在Web环境下支持独立于容器的集群会话,支持可插拔策略来确定 Session ID, WebSocket活跃的时候可以简单地保持HttpSession |
Spring Shell | Spring Shell提供交互式的 Shell,用户可使用简单的基于 Spring的编程模型来开发命令 |
总结
Spring为Java开发者带来了敏捷便利、灵活实用的开发方式。Spring4.0在核心容器、Web、测试、缓存、数据访问等方面进行了升级,全面支持Java 8.0(包含lambda表达式)、WebSocket、Groovy动态语音等。