本月 12 日,SpringSourceCTO Adrian Colyer 在博客中宣布Spring 框架4.0 GA 版本正式发布。这个版本支持了众多Java 8 的新特性,新增了对WebSocket、STOMP 等技术的支持,并增强了测试、Web 开发的便利性,另外,在这个版本中还删除了废弃的方法和类。
近十年来,Spring 框架成为企业级Java 开发中占据主导地位的编程模型,该框架最早发布于2004 年,其后发布了几个重大的版本更新:在Spring 2.0 中提供对XML 命名空间和AspectJ 的支持;Spring 2.5 中新增了注解驱动的配置;在Spring 3.0 版本中引入了很强大的使用Java 5+ 的基础功能以及基于Java 的@Configuration 模型。
Spring 4.0 是最新的主版本,这个版本中包含了大量的新特性以应对 Java 语言和 Java EE 规范的发展。Spring 4.0 是首个完全支持 Java 8 特性的框架,这个版本对环境的最低要求是 Java SE 6。Spring 4.0 连同其他的 Spring 项目,将会应对并带动下一个十年 JVM 的新趋势,包括开发人员生产率(Developer Productivity)、大数据、云、REST 以及微服务架构(Micro Service Architecture)。
Spring 框架 4.0 的整体架构如下图所示:
Spring 4.0 的新特性包括:
对 Java 8 诸多特性的支持。现在开发者可以在 Spring 的回调接口中使用 lambda 表达式以及方法引用(method reference),对 java.time(JSR-310)提供了很好的支持,一些注解也被更新为 @Repeatable。尽管 Spring 4.0 还支持 Java SE6,但是官方还是建议在使用 Spring 4 的新项目中,使用 Java 7 或 8。
对 Java EE 6 和 7 的支持。Spring 在 JCP 中协助定义相关的规范,框架中对这些规范提供了很好的支持。Spring 框架的 4.0 版本考虑到了 JavaEE6 以及更高的版本规范,尤其是 JPA 2.0 和 Servlet 3.0 规范。为了更具技术前瞻性,Spring 框架 4.0 还支持 Java EE 7 中已可用的规范,包括 JMS 2.0、JTA 1.2、JPA 2.1、Bean Validation 1.1 以及 JSR-236 Concurrency Utilities。另外,对其他开源库的支持也提升到了最新版本,如 Hibernate、Quartz、EhCache 等。
对 WebSocket、SockJS 以及 STOMP 的支持。Spring 4.0 提供了一个名为 spring-websocket 的新模块,以支持基于 WebSocket 的、客户端 - 服务器的双向通信,它与 JSR-356 Java WebSocket API 兼容。另外,还提供了基于 SockJS (对 WebSocket 的模拟)的回调方案,以适应不支持 WebSocket 协议的浏览器。新增的 spring-messaging 模块提供了对 STOMP 的支持,以及用于路由和处理来自 WebSocket 客户端的 STOMP 消息的注解编程模型。spring-messaging 模块中还包含了 Spring Integration 项目中的核心抽象类,如 Message、MessageChannel、MessageHandler。
对动态语言 Groovy 的支持。应用可以部分或完全使用 Groovy 编写。借助于 Spring 4.0,能够使用 Groovy DSL 定义外部的 Bean 配置,这类似于 XML Bean 声明,但是语法更为简洁。使用 Groovy 还能够在启动代码中直接嵌入 Bean 的声明。
简化 Spring 的学习过程。 Spring.io 网站上提供了全新的“Getting Started”指导和样例帮助你学习Spring 技术。基于Spring 框架4.0 构建的 Spring Boot 项目也可以极大地简化应用开发中相关配置的复杂性。
对未来新架构的考量。Adrian Colyer 的博客还着重提到了新的应用架构。像Amazon、Google、Facebook 这样的行业的领导者,目前正在抛弃庞大的Java 架构,而是更加倾向于微服务架构(MSA,更多资料可以参见该文章)以及REST。James Lewis 曾经在QCon 上发表过一个演讲来阐述MSA 的特征。针对这种趋势,Spring 4.0 中做了充分考虑,在Spring 框架中REST 是一等公民,在其他组件如Spring Boot、Spring HATEOAS、Spring Security、Spring Social、Spring Data 均是如此。借助于Spring 框架4.0,开发人员可以使用非阻塞的AsyncRestTemplate 以及Java 语言中的Futures 等特性,构建出更加具有交互性、事件驱动的REST 服务。Spring 对HTML5/WebSocket RFC 6455/JSR-356 的支持均有助于创建事件驱动的应用程序。
Spring 框架 4.0 删除了所有废弃的方法和类。如果你想从一个之前的版本中升级到 4.0 的话,需要将所有对废弃方法和类的引用进行更新。升级到 4.0 迁移文档可以在 Spring 框架 GitHub Wiki 中的该页面查看,完整的用户指导文档,可以查看该页面。
除了核心框架以外,近年来,Spring 中新增了许多新的项目以应对新的技术趋势和应用潮流,如 Spring Boot 、 Spring XD 、 Spring HATEOAS 、 Spring Integration 、 Spring Batch 、 Spring Social 、 Spring Data 等,您可以通过项目列表页面了解 Spring 各项目的最新进展。
评论