Spring 5 距离 Spring4 发布有4年多, 所以说Spring 5是一个重要的版本

要构建和运行Spring 5应用程序, 至少需要Java EE 7 和JDK 8 , 之前的JDK和Java EE版本不再支持

Java EE 7 包含以下内容

Servlet 3.1

JMS 2.0

JPA 2.1

JAX-RS 2.0

Bean Validation 1.1  与Java基准类似, 许多其他框架的基准也有变化

Hibernate 5

Jackson 2.6

EhCache 2.10

JUnit 5

Tiles 3

另外,各种服务器的最低支持版本也已经升级

Tomcat 8.5+

Jetty 9.4+

WildFly 10+

Netty 4.1+

Undertow 1.4+

同时,Spring 5 已经与java EE 8 API集成 , 这意味着用户可以使用Spring5来创建新功能的应用。 因为当初Oracle将Java EE 8 给了Eclipse开源基金会,Java EE后续的技术更新全部交给了Eclipse基金会。 并且java EE 后续更新会向后兼容,包括java EE 8 的所有API.

spring5 引入了响应式编程模型与函数式编程

响应式编程模型

  web开发将会划分两个分支, 即传统的基于Servlet的Web编程(Spring-webmvc模块) 和使用Spring WebFlux实现响应式编程(spring-web-reactive模块)

函数式编程

  函数式Web框架,  引入了两个基本组件: HandlerFunction和RouterFunction

狭义上的spring --- Spring Framework(spring框架)

   spring框架实现了对bean的依赖管理(IoC)及AOP的编程方式, 提高了编程效率, 降低了代码之间的耦合

   spring框架是模块化的, 允许自由选择需要的部分, 基本涵盖了企业开发需要的模块, 以下为spring常用模块

 Core Container (核心容器)

由spring-core , spring-beans , spring-context , spring-context-support 和spring-expresstion(Spring Expression Language) 模块组成

1 spring-core 模块是spring框架基本的核心工具类

2 spring-beans模块提供框架的基础部分, 包括IoC和DI(Dependency Injection).   BeanFactory是一个复杂的工厂模式的实现,消除对程序性单例模式的需要,并真正地允许你从程序逻辑中分离出依赖关系和配置从而实现解耦,IoC就是一个大工厂。  beans模块包含了配置文件,创建和管理bean以及进行IoC/DI相关操作的类

3 spring-context 模块建立在core和beans模块的基础功能上, 它的作用是实现对象存储操作

4 spring-expression 用在运行时查询和操作对象图的表达式语言
AOP 和Instrumentation

  spring-aop模块提供AOP的实现, 从而能够实现方法拦截器和切入点完全分离代码, 直接将面向切面的编程功能集成到Spring框架上

  单独spring-aspects 提供了集成使用AspectJ

  spring-instrument模块提供了instrumentation和类加载器(classloader)的实现, 使得可以在特定的应用服务器上是使用

  spring-instrument-tomcat用于Tomcat-Instrumentation代理

消息

  spring-messaging模块 , 提供消息基础服务, 该模块还包含一组消息映射方法的注解, 类似于基于编程模型中的SpringMVC的注解

数据访问/集成(Data Access/Integration)

  由JDBC, ORM, OXM , JMS和Transaction模块组成

  spring-jdbc模块提供了一个JDBC抽象层, 这样开发人员能避免一些烦琐的JDBC编码

  spring-tx 模块支持用于实现特殊接口和所有POJO类的编程及申明式事务管理

  spring-orm (object relationship mapping模块为流行的对象-关系映射API , 如JPA , JDO, Hibernate , iBatis(mybatis)等

  spring-oxm 模块提供了一个支持Object/XML映射实现的抽象层, 如JAXB , Castor, JiBX  ,和 XStream

  spring-jms (Java Messaging Service) 模块用于包含用于生成和使用消息的功能.

  transaction 模块支持编程和声明式的事务管理, 这些事务类必须实现特定的接口,并且对所有的POJO都适用

Web

  Web层由spring-web , spring-webmvc , spring-websocket , 和spring-webflux组成

  spring-web模块提供了基本的面向web开发的集成功能

  spring-webmvc模块(也称Web Servlet模块)包含Spring的MVC功能和REST服务功能

  spring-websocket模块是基于WebSocket\协议通信的程序开发

  spring-webflux模块是spring5新添加的支持响应式编程的Web开发框架

测试

  spring-text模块支持通过组合JUnit或TestNG来实现单元测试和集成测试等功能.

  

广义上的Spring---Spring技术栈

  Spring Data (对各种数据库的支持), Spring Batch (批处理轻量级框架) , Spring Integration (集成技术) , Spring Security (身份认证和访问控制框架) , Spring Mobile(移动web开发)Spring for Android (用于简化Andorid 原生应用程序开发) , Spring Boot (Spring团队提供的全新框架) , Spring Cloud

注意: 约定: 由于Spring 是早期的Spring框架, 现在:"Spring 框架"指狭义上的Spring , "Spring" 指广义上的Spring技术栈

spring设计模式

  Spring使用POJO模式的强大功能来实现企业应用程序的轻量级和最小侵入性的开发.

  Spring使用依赖注入模式(DI模式) 实现松耦合, 并使系统可以更加面向接口编程

  Spring使用Decorator 和 Proxy设计模式进行声明式编程

  Spring使用Template设计模式消除样板代码

Spring 5 , 狭义上的spring 以及 广义上的spring , spring 设计模式的更多相关文章

  1. uploadify在火狐下上传不了的解决方案,java版(Spring+SpringMVC+MyBatis)详细解决方案

     由于技术选型的原因,在一个产品中,我选择了uploadify,选择它的原因是它有完善的技术文档说明(http://www.uploadify.com/documentation/),唯一不足的是 ...

  2. spring 配置Value常量(不支持到static上)

    spring 配置Value常量(不支持到static上) 看代码吧,语言表达有问题. package com.variflight.xzair.rest.constant; import org.s ...

  3. spring mvc ajax异步文件的上传和普通文件上传

    表单提交方式文件上传和ajax异步文件上传 一:首先是我在spring mvc下的表单提交方式上传 ssm的包配置我就不一一详细列出来了,但是上传的包我还是列出来 这一段我也不知道怎么给大家讲解就是直 ...

  4. Spring MVC-表单(Form)标签-文件上传(File Upload)示例(转载实践)

    以下内容翻译自:https://www.tutorialspoint.com/springmvc/springmvc_upload.htm 说明:示例基于Spring MVC 4.1.6. 以下示例显 ...

  5. (29)Spring boot 文件上传(多文件上传)【从零开始学Spring Boot】

    文件上传主要分以下几个步骤: (1)新建maven java project: (2)在pom.xml加入相应依赖: (3)新建一个表单页面(这里使用thymleaf); (4)编写controlle ...

  6. Spring Cloud Config-Client 无法获取 Config-Server 在 github 上的配置文件的属性值,竟然是因为

    Spring Cloud Config-Client 无法获取 Config-Server 在 github 上的配置文件的属性值,竟然是因为!!! 2018年07月23日 16:33:25 一颗很菜 ...

  7. 在Linux上从零开始部署前后端分离的Vue+Spring boot项目

    最近做了一个前后端分离的商城项目来熟悉开发的整个流程,最后希望能有个正式的部署流程,于是试着把项目放在云服务器上,做了一下发现遇到了不少问题,借此记录一下整个部署的过程. 使用的技术栈如标题所说大体上 ...

  8. Spring学习---Spring中利用组件实现从FTP服务器上传/下载文件

    FtpUtil.java import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundExcepti ...

  9. Spring Boot MVC 单张图片和多张图片上传 和通用文件下载

    @Autowired private ServerConfig serverConfig; /** * 通用下载请求 * * @param fileName 文件名称 * @param delete ...

随机推荐

  1. Typecho博客支持emoji表情设置

    介绍 大家在typecho博客写文章时,很多人都喜欢使用emoji表情(比如这些图标)但是typecho的数据库类型默认不支持emoji编码,因为Emoji是一种在Unicode位于u1F601-u1 ...

  2. Hexo博客(Snail主题)搭建回顾概览

    Hexo博客(Snail主题)搭建回顾概览 笔者搭建博客地址:https://saltyfishyjk.github.io 目录 Hexo博客(Snail主题)搭建回顾概览 Part 0 前言 写作背 ...

  3. 学习JAVAWEB 第三十六天

    今天改了一天的bug 使用eclipse出现的问题:首先lib文件夹的名字是不可以更改的它放在WEB-INF文件夹下,放所有的jar包,使用时一定不要忘了将jar包添加至构建路径tomcat的部署问题 ...

  4. plsql 普通游标

    -- ①普通游标:操作步骤 边敲边想 学无止境 /* 游标:指针:内存中的一块数据缓冲区,上下文: 将查询到的结果集缓存起来,便于进行逐行定位处理. 使用完成后要及时关闭: 操作步骤? 1.定义游标 ...

  5. 【ASP.NET Core】设置Web API 响应的数据格式——Produces 特性篇

    开春首文,今天老周就跟各位大伙伴们聊一个很简单的话题:怎么设定API响应的数据格式. 说本质一点,就是设置所返回内容的 MIME 类型(Content-Type 头).当然了,咱们不会使用在HTTP管 ...

  6. Python中列表操作函数append的浅拷贝问题

    L=int(input())#L位数N=int(input())#N进制row=[]list1=[]for i in range(1,N): row.append(1)list1.append(row ...

  7. GC基础知识

    内存溢出和内存泄漏 内存溢出(Out Of Memory) 就是申请内存时,JVM没有足够的内存空间.通俗说法就是去蹲坑发现坑位满了. 内存泄露 (Memory Leak) 就是申请了内存,但是没有释 ...

  8. 获取公网ip,获取用户城市地址

    <?php class GetIp { public static $api = 'http://ip.taobao.com/service/getIpInfo.php?ip='; public ...

  9. 2022寒假集训day4

    day4(day5补完的) 继续刷搜索方面的题, 初步了解了序列. T1 迷宫问题 题目描述设有一个 n*n 方格的迷宫,入口和出口分别在左上角和右上角.迷宫格子中分别放 0 和 1 ,0 表示可通, ...

  10. 深入Java微服务之网关系列1:什么是网关

    ​ 前言 近来,在想着重构一个新的产品.准备采用微服务的技术解决方案,来搭建基础设施框架.网关,是一个必不可少的组件.那么,网关到底是什么? 其又有什么特点或者特性,成为微服务必不可少的组件呢?今天, ...