随着互联网技术的发展,Spring也在不断的进化,从最早轻量级的支持J2EE到现在对高并发,多线程异步程序的支持,spring也不断的更新自己走在技术的最前沿,我们先来从Spring3开始看看spring的发展变迁:

Spring3

Spring4

Spring5

Spring Framework 4.x 和Spring Framework 3.2.x的架构变化 
1.从图中可以看出,总体的层次结构没有太大变化,变化的是 Spring 4.0.3去掉了 struts 模块(spring-struts包)。增加 WebSocket 模块(spring-websocket包),增加了对 WebSocket、SockJS 以及 STOMP 的支持,它与 JSR-356 Java WebSocket API 兼容。另外,还提供了基于 SockJS(对 WebSocket 的模拟)的回调方案,以适应不支持 WebSocket 协议的浏览器。

2.同时增加了 messaging 模块(spring-messaging),提供了对 STOMP 的支持,以及用于路由和处理来自 WebSocket 客户端的 STOMP 消息的注解编程模型。spring-messaging 模块中还 包含了 Spring Integration 项目中的核心抽象类,如 Message、MessageChannel、MessageHandler。

3.如果去看源代码的话,还可以发现还有一个新增的包,加强了 beans 模块,就是 spring-beans-groovy。应用可以部分或完全使用 Groovy 编写。借助于 Spring 4.0,能够使用 Groovy DSL 定义外部的 Bean 配置,这类似于 XML Bean 声明,但是语法更为简洁。使用Groovy还能够在启动代码中直接嵌入Bean的声明。

4.对JDK的支持:Java 8支持。当然也支持Java6和Java7,但最好在使用Spring框架3.X或4.X时,将JDK升级到Java7,因为有些版本至少需要Java7。使用Spring4.x时Java EE版本至少要6或以上,且需要JPA 2.0和Servlet 3.0 的支持,所以服务器,web容器需要做相应的升级。一个更具前瞻性的注意是,Spring4.0支持J2EE 7的适用级规范,比如JMS 2.0, JTA 1.2, JPA 2.1, Bean Validation 1.1和JSR-236并发工具包,在选择这些jar包时需要注意版本。

5.核心容器提升: 
支持Bean的泛型注入,比如:@Autowired Repository customerRepository 
使用元注解开发暴露指定内部属性的自定义注解。 
通过 @Ordered注解或Ordered 接口对注入集合或数组的 Bean 进行排序。 
@Lazy 注解可以用在注入点或 @Bean 定义上。 
为开发者引入 @Description 注解。 
引入 @Conditional 注解进行有条件的 Bean过滤。 
基于 CGLIB 的代理类不需要提供默认构造器,因为 Spring 框架将 CGLIB 整合到内部了。 
框架支持时区管理,比如 LocalContext

5.Web提升 
增加新的 @RestController 注解,这样就不需要在每个 @RequestMapping 方法中添加 @ResponseBody 注解。 
添加 AsyncRestTemplate,在开发 REST 客户端时允许非阻塞异步支持。 
为 Spring MVC 应用程序开发提供全面的时区支持。

Spring3到Spring4放入变动报告

Spring 4.X新特性

Spring5

升级到 Java SE 8 和 Java EE 7
直到现在,Spring Framework 仍支持一些弃用的 Java 版本,但 Spring 5 已从旧包袱中解放出来。为了充分利用 Java 8 特性,它的代码库已进行了改进,而且该框架要求将 Java 8 作为最低的 JDK 版本。

在 API 级别上,Spring 5 兼容 Java EE 8 技术,满足对 Servlet 4.0、Bean Validation 2.0 和全新的 JSON Binding API 的需求。对 Java EE API 的最低要求为 V7,该版本引入了针对 Servlet、JPA 和 Bean Validation API 的次要版本。

反应式编程模型
Spring 5 最令人兴奋的新特性是它的反应式编程模型。Spring 5 Framework 基于一种反应式基础而构建,而且是完全异步和非阻塞的。只需少量的线程,新的事件循环执行模型就可以垂直扩展。

新的spring-webflux模块,一个基于reactive的spring-webmvc,完全的异步非阻塞,旨在使用enent-loop执行模型和传统的线程池模型。

当然这里还有很多可以参照

了解Spring的变迁从Spring3到Spring5相关推荐

  1. Spring是如何扫描包的 Spring5.x(源码向)

    Spring是如何扫描包的 Spring5.x 锁定这个方法,Spring会在ClassPathScanningCandidateComponentProvider类的这个方法中进行扫描 privat ...

  2. java day60【 Spring 中的 JdbcTemplate[会用] 、Spring 中的事务控制 、Spring5 的新特性[了解] 】...

    第1章 Spring 中的 JdbcTemplate[会用] 1.1JdbcTemplate 概述 1.2JdbcTemplate 对象的创建 1.3spring 中配置数据源 1.3.1 环境搭建 ...

  3. spring版本升级,由spring3.1升级到spring4.3

    由于要做Junit单元测试,项目使用的spring3.1无法满足需求,Mockmvc于Spring3.2后才继承到框架里,为后面方便直接升级到spring4.3,遇到的问题整理如下: 1:定时器需要升 ...

  4. Spring Framework框架起步,小白都看得懂(官翻版)!

    写在开头 本篇章介绍Spring框架的完整的全部技术.写这篇文章的目的是,一方面为了给初入后端开发的才子一篇入门指导,另一方面是为了自己对于基础知识的查阅. Spring不一定是最好的框架(虽然综合能 ...

  5. Spring Boot 解决跨域问题的 3 种方案!

    以下文章来源方志朋的博客,回复"666"获面试宝典 作者:telami 来源:www.telami.cn/2019/springboot-resolve-cors/ 前后端分离大势 ...

  6. Spring Boot 解决跨域问题的 3 种方案

    来源 | r6d.cn/XTrB 前后端分离大势所趋,跨域问题更是老生常谈,随便用标题去google或百度一下,能搜出一大片解决方案,那么为啥又要写一遍呢,不急往下看. 问题背景: Same Orig ...

  7. 【struts2+spring+hibernate】ssh框架整合开发

    SSH框架整合 1 Struts2+Spring+Hibernate导包 Struts2导入jar包: * struts2/apps/struts2-blank.war/WEB-INF/lib/*.j ...

  8. Spring与日志的整合

    Spring 与日志框架进行整合,日志框架就可以在控制台中,输出Spring框架运行过程中的⼀ 些重要的信息. 好处:便于了解Spring框架的运行过程,利于程序的调试. 默认日志框架 Spring ...

  9. Hello World with Spring 3 MVC

    在2005年,我对Martin Fowler的这篇文章对Spring进行了介绍.从那时起,我就修改了许多IoC框架,包括Guice , PicoContainer , NanoContainer等.虽 ...

  10. springboot异步注解_Spring Boot 2 :Spring Boot 中的响应式编程和 WebFlux 入门

    [小宅按]Spring 5.0 中发布了重量级组件 Webflux,拉起了响应式编程的规模使用序幕. WebFlux 使用的场景是异步非阻塞的,使用 Webflux 作为系统解决方案,在大多数场景下可 ...

最新文章

  1. HDU2106 decimal system
  2. nssl1478-题【dp】
  3. Java如何封装JDK_java7JDK的常用封装类型
  4. python selenium 处理弹窗_转:python selenium 弹出框处理的实现
  5. sharepoint项目部署
  6. maven安装和eclipse集成
  7. HTML标签和属性大全
  8. python实现语义分割_遥感图像语义分割常用精度指标及其python实现(支持多类)
  9. 神经网络计算棒怎么用,英特尔神经网络计算棒
  10. 路由器网速测试用哪个软件,怎么测网速比较准确,测试网速最准确的办法
  11. 打开 igv java_【2019-04-23】 IGV打不开的处理办法
  12. CDRouter IPv6 Test Case
  13. 计算机网络——各层次网络互联设备
  14. Linux自动备份压缩MySQL数据库的实用方法
  15. Python数据可视化的3大步骤
  16. 把图片转换成视频-ffmpeg
  17. 在matlab中ATB是什么意思,Matlab—线性代数入门
  18. 作为一名合格的JAVA架构师需要点亮哪些技能树?
  19. Spring构造器的三种注入方式
  20. 9号和10号的学习内容

热门文章

  1. 专业绘图(Visio 2016)实战视频课程-专题视频课程
  2. 【C51单片机】数码管实现99秒倒计时
  3. 万年历c语言程序微博,简易的万年历程序C语言
  4. ant nutch mysql_ant编译apache-nutch-2.2.1结合mysql实现爬虫的安装配置全过程
  5. 射频识别(RFID)技术与ETC技术简介
  6. 计算机二级数据模拟表,2020年计算机二级《Access数据库程序设计》模拟题(5)...
  7. AT89C51单片机8位竞赛抢答器_倒计时可调仿真设计
  8. 安装虚拟机提示未能启用服务器,win7系统共享虚拟机提示VMware Workstation Server共享服务不能启动的解决方法...
  9. 计量经济学(十)---模型选择:标准与检验
  10. 在本地计算机无法启动uGs,SIEMENS_NX 免安装版