当前位置:首页>Java>Spring>Spring教程>Spring的发展历史

Spring的发展历史

作者:微学网发布时间:2019-08-16 06:16:25

Spring 0.9

这是该框架第一个公开发布的版本,以Expert One-on-One:J2EE Design and Development一书为基础,提供了bean配置基础、AOP支持、JDBC抽象框架、抽象事务支持等。该版本没有官方参考文档,但可以在SourceForge上找到现有的源代码和文档。

Spring 1.x

这是发布的第一个带有官方参考文档的版本。它由七个模块组成。

  • Spring Core : bean容器以及支持的实用程序。

  • Spring Context : ApplicationContext、UI、验证、JNDI、Enterprise JavaBean(EJB)、远程处理和邮件支持。

  • Spring DAO:事务基础结构、Java Database Connectivity(JDBC)和数据访问对象(DAO)支持。

  • Spring ORM : Hibernate、iBATIS和Java Data Object(JDO)支持。

  • Spring AOP:符合AOP联盟的面向方面编程(AOP)实现。

  • Spring Web:基本集成功能,比如多部分功能、通过servlet侦听器进行上下文初始化以及面向Web的应用程序上下文。

  • Spring Web MVC:基于Web的Model-View-Controller(MVC)框架。

Spring 2.x

该版本六个模块组成。Spring Context 模块包含在Spring Core中。并且在Spring2.x版本中,所有的Spring Web组件都由单个项目表示。

  • 通过使用新的基于XMLSchema的配置而不是DTD格式来简化XL配置。值得注意的改进方面包括bean定义、AOP以及声明式事务。

  • 用于Web和门户的新bean作用域(请求、会话和全局会话)。

  • 支持AOP开发的@AspectJ注解。

  • Java Persistence API(JPA)抽象层。

  • 完全支持异步JMS消息驱动的POJO(用于普通的旧Java对象)。

  • JDBC简化包括在使用Java 5+时的SimpleJdbc Template。

  • JDBC命名参数支持(NamedParameterJdbc Template)。

  • 针对Spring MVC的表单标签库。对Portlet MVC框架的介绍。

  • 动态语言支持。可以使用JRuby、Groovy以及BeanShell来编写bean。

  • JMX中的通知支持以及可控的MBean注册。

  • 为调度任务而引入的TaskExecutor抽象。

  • Java5注解支持,特别针对@Transactional、@Required 和@AspectJ。

Spring2.5.x

主要变更如下:

  • 名为@Autowired的新配置注解以及对JSR-250注解(@Resource、@PostConstruct 和@PreDestroy)的支持。

  • 新的构造型注解:@Component、@Repository、@Service 和@Controller。

  • 自动类路径扫描支持,可以检测和连接带有构造型注解的类。

  • AOP更新,包括一个新的bean切入点元素以及AspectJ加载时织入(weaving)。

  • 完整的WebSphere事务管理支持。

  • 除了Spring MVC@Controller注解,还添加了@RequestMapping、@RequestParam 和@ModelAttribute注解,从而支持通过注解配置进行请求处理。

  • 支持Tiles2。

  • 支持JSF1.2。

  • 支持JAX-WS2.0/2.1。

  • 引入了Spring TestContext Framework,提供注解驱动和集成测试支持,不受所用测试框架的影响。

  • 能够将Spring应用程序上下文部署为JCA适配器。

Spring3.0.x

这是基于Java5的Spring的第一个版本,旨在充分利用Java5的功能,如泛型、可变参数和其他语言改进。

该版本引入了基于Java的@Configuration模型。

目前已经对框架模块进行了修改,分别针对每个模块JAR使用一棵源代码树进行管理。

主要变更如下:

  • 支持Java5功能,例如泛型、可变参数以及其他改进。

  • 对Callables、Futures、ExecutorService适配器和ThreadFactory集成提供很好的支持。

  • 框架模块目前针对每个模块JAR都使用一棵源代码树进行分别管理。

  • Spring Expression Language(SpEL)的引入。

  • 核心Java Config功能和注解的集成。

  • 通用型转换系统和字段格式化系统。

  • 全面支持REST。

  • 新的MVCXML名称空间和其他注解,例如Spring MVC中的@Cookie Value和@RequestHeaders。

  • 验证增强功能和JSR-303(bean验证)支持。

  • 对JavaEE6的早期支持,包括@Async/@Asynchronous 注解、JSR-303、JSF2.0、JPA2.0等。

  • 支持嵌入式数据库,例如HSQL、H2和Derby。

Spring 3.1.x

主要变更如下:

  • 新的缓冲抽象。

  • 可以用XML定义bean定义配置文件,同时也支持@Profile 注解。

  • 针对统一属性管理的环境抽象。

  • 与常见Spring XML名称空间元素等价的注解,如@ComponentScan、@EnableTransactionManagement、@EnableCaching、@EnableWebMvc、@EnableScheduling、@EnableAsync、@EnableA spectJAutoProxy、@EnableLoad TimeWeaving 和 @EnableSpringConfigured。

  • 支持Hibernate4。

  • Spring TestContext Framework 对@Configuration 类和bean定义配置文件的支持。

  • 名称空间c:简化了构造函数注入。

  • 支持Servlet3中Servlet容器的基于代码的配置。

  • 能够在不使用persistence.xml的情况下启动JPA EntityManagerFactory。

  • 将Flash 和RedirectAttributes 添加到SpringMVC中,从而允许通过使用HTTP会话重定向属性URI模板变量增强功能。

  • 能够使用@Valid 来注解 Spring MVC@RequestBody 控制器方法参数。

  • 能够使用@RequestPart 来注解 Spring MVC控制器方法参数。

Spring3.2.x

主要变更如下:

  • 新的Spring MVC测试框架。

  • 新的Spring MVC注解@ControllerAdvice 和@MatrixVariable。

  • 支持RestTemplate 和@RequestBody参数中的泛型类型。

  • 支持JacksonJSON2。

  • 支持Tiles3。

  • @RequestBody或@RequestPart参数的后面可以跟一个Emors参数,从而可以对验证错误进行处理。

  • 能够通过使用MVC名称空间和Java Config配置选项来排除URL模式。

  • 支持没有Joda Time的@Date TimeFormat。

  • 全局日期和时间格式化。

  • 跨框架的并发优化,从而最小化锁定,并改进了作用域/原型bean的并发创建。

  • 新的基于Gradle的构建系统。
    迁移到GitHub(https://github.com/SpringSource/spring-framework)。

  • 在框架和第三方依赖中支持精简的Java SE7/OpenJDK7。
    现在,CGLIB和ASM已经成为Spring的一部分。除了AspectJ1.6,其他版本都支持AspectJ1.7。

Spring4.0x

这是一个 重要 的Spring版本,也是第一个完全支持Java8的版本。

虽然仍然可以使用较旧版本的Java,但Java SE6已经是最低版本要求。

弃用的类和方法已被删除,但模块组织几乎相同。

主要变更如下:

  • 通过新的www.spring.io/guides网站上的一系列入门指南提高了入门体验。

  • 从先前的Spring3版本中删除了弃用的软件包和方法。

  • 支持Java8,将最低Java版本提高到6update18。

  • JavaEE6及以上版本现在被认为是Spring Framework4.0的基准。

  • Groovy bean 定义DSL,允许通过Groovy 语法配置bean定义。

  • 核心容器、测试和一般Web改进。

  • WebSocket、SockJS和STOMP消息。

Spring4.2.x

主要变更如下:

  • 核心改进(例如,引入@AliasFor,并修改现有的注解以使用它)。

  • 全面支持Hibernate ORM5.0。

  • JMS和Web改进。

  • 对WebSocket消息传递的改进。

  • 测试改进,最引人注目的是引入了@Commit 来替换@Rolback(false),并引入了AopTestUtils实用工具类,允许访问隐藏在Spring代理后面的底层对象。

Spring 4.3.x

主要变更如下:

  • 完善了编程模型。

  • 在核心容器(包含ASM 5.1、CGLIB3.2.4以及spring-core.jar中的Objenesis2.4)和MVC方面有了相当大的改进。

  • 添加了组合注解。

  • Spring TestContext Framework 需要JUnit4.12或更高版本。

  • 支持新的库,包括Hibernate ORM 5.2、Hibernate Validator5.3、Tomcat8.5和9.0、Jackson2.8等。

Spring 5.x

这是一个主要版本

整个框架代码库都基于 Java 8。并且从 2016 年 7 月起 与 Java 9 完全兼容。

主要变更如下:

  • 支持Portlet、Velocity、JasperReports、XMLBeans、JDO、Guava、Tiles2和Hibernate3。

  • 现在,XML配置名称空间被流式传输到未版本化的模式;虽然特定版本的声明仍然被支持,但要针对最新的XSD架构进行验证。

  • 充分利用Java8的强大功能,从而在性能上得到极大的改进。

  • Resource 抽象为防御 getFile 访问提供了isFile指示符。

  • Spring 提供的Filter实现完全支持Servlet3.1签名。

  • 支持Protobuf3.0。

  • 支持JMS2.0+和JPA2.1+。

  • 引入了Spring Web Flow
    这是一个用于替代SpringMVC的项目,构建在反应式基础之上,这意味着它完全是异步和非阻塞的
    主要用于事件循环执行模型,而非传统的每个请求执行模型都带有一个线程的大型线程池(基于Project Reactor构建)。

  • Web和核心模块适用于反应式编程模型。

  • Spring测试模块有了很大的改进。
    现在支持JUnit5,引入了新的注解来支持Jupiter编程和扩展模型,例如@Spring]UnitConfig、@SpringJUnitWebConfig、@EnabledIf和@Disabledlf。

  • 支持在Spring TestContext Framework中实现并行测试执行。