基于SpringBoot2.0版本与老版本的区别
目录
- SpringBoot版本问题
- 这是maven依赖
- 一、解决方案
- 二、解决方案
以Java 8 为基准
Spring Boot 2.0 要求Java 版本必须8以上, Java 6 和 7 不再支持。
内嵌容器包结构调整
为了支持reactive使用场景,内嵌的容器包结构被重构了的幅度有点大。EmbeddedServletContainer被重命名为WebServer,并且org.springframework.boot.context.embedded 包被重定向到了org.springframework.boot.web.embedded包下。
举个例子,如果你要使用TomcatEmbeddedServletContainerFactory回调接口来自定义内嵌Tomcat容器,你现在应该使用TomcatServletWebServerFactory。
Servlet-specific 的server properties调整
大量的Servlet专属的server.* properties被移到了server.servlet下:
Old property |
New property |
server.context-parameters.* |
server.servlet.context-parameters.* |
server.context-path |
server.servlet.context-path |
server.jsp.class-name |
server.servlet.jsp.class-name |
server.jsp.init-parameters.* |
server.servlet.jsp.init-parameters.* |
server.jsp.registered |
server.servlet.jsp.registered |
server.servlet-path |
server.servlet.path |
Actuator 默认映射
ctuator的端点(endpoint)现在默认映射到/application,比如,/info 端点现在就是在/application/info。但你可以使用management.context-path来覆盖此默认值。
Spring Loaded不再支持
由于Spring Loaded项目已被移到了attic了,所以不再支持Spring Loaded了。现在建议你去使用Devtools。Spring Loaded不再支持了。
支持Quartz Scheduler
Spring Boot 2 针对Quartz调度器提供了支持。你可以加入spring-boot-starter-quartz starter来启用。而且支持基于内存和基于jdbc两种存储。
OAuth 2.0 支持
Spring Security OAuth 项目中的功能将会迁移到Spring Security中。将会OAuth 2.0。
支持Spring WebFlux
WebFlux 模块的名称是 spring-webflux,名称中的 Flux 来源于 Reactor 中的类 Flux。该模块中包含了对反应式 HTTP、服务器推送事件和 WebSocket 的客户端和服务器端的支持。
对于开发人员来说,比较重要的是服务器端的开发,这也是本文的重点。
在服务器端,WebFlux 支持两种不同的编程模型:第一种是 Spring MVC 中使用的基于 Java 注解的方式;第二种是基于 Java 8 的 lambda 表达式的函数式编程模型。这两种编程模型只是在代码编写方式上存在不同。
它们运行在同样的反应式底层架构之上,因此在运行时是相同的。
WebFlux 需要底层提供运行时的支持,WebFlux 可以运行在支持 Servlet 3.1 非阻塞 IO API 的 Servlet 容器上,或是其他异步运行时环境,如 Netty 和 Undertow。
版本要求
Jetty
- 要求Jetty最低版本为9.4。
Tomcat
- 要求Tomcat最低版本为8.5。
Hibernate
- 要求Hibernate最低版本为5.2。
Gradle
- 要求Gradle最低版本为3.4。
SendGrid
- SendGrid最低支持版本是3.2。为了支持这次升级,username和password已经被干掉了。因为API key现在是唯一支持的认证方式。
SpringBoot版本问题 IDEA创建springboot中启动问题
Exception in thread “main” java.lang.AbstractMethodError:
org.springframework.boot.context.config.ConfigFileApplicationListener.supportsSourceType(Ljava/lang/Class; )Z
文章图片
大家度知道这是一个springboot的启动类
这是maven依赖
4.0.0 org.springframework.boot spring-boot-starter-parent2.1.3.RELEASE com.example demo0.0.1-SNAPSHOT demo Demo project for Spring Boot 1.8 org.springframework.boot spring-boot-starterspring-context org.springframework org.springframework.boot spring-boot-starter-testtestorg.projectlombok lomboktrue com.baomidou mybatis-plus-boot-starter3.1.0 com.h2database h2runtimeorg.springframework spring-context4.3.2.RELEASE org.springframework.boot spring-boot-starter-weborg.springframework.boot spring-boot-maven-plugin
看起来万事俱备,也很符合springboot启动需要,那就启动吧
Exception in thread "main" java.lang.AbstractMethodError:结果给你抛出这样的异常
org.springframework.boot.context.config.ConfigFileApplicationListener.supportsSourceType(Ljava/lang/Class; )Z
此时不慌,原因有两个(我所能想到的,不喜勿喷)
- jar冲突
- springboot的版本问题
一、解决方案
在IDEA中下载maven helper插件,方便排查jar冲突,
文章图片
重启后的点击pom会出现Dependency Analyzer
文章图片
排查冲突后再次运行程序,出现如下情况
文章图片
二、解决方案
像魔鬼一样还是没有解决,这时候疯狂的上百度搜,依然没有找到办法解决,最后在拉屎的瞬间想到springboot 有一个 1.5.6的版本,出于好奇将2.1.3版本修改为1.5.6版本如下
org.springframework.boot spring-boot-starter-parent1.5.6.RELEASE
看到下面的图,恭喜你,springboot启动成功
文章图片
【基于SpringBoot2.0版本与老版本的区别】以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
推荐阅读
- 基于微信小程序带后端ssm接口小区物业管理平台设计
- 基于|基于 antd 风格的 element-table + pagination 的二次封装
- 【Hadoop踩雷】Mac下安装Hadoop3以及Java版本问题
- 基于爱,才会有“愿望”当“要求”。2017.8.12
- C语言的版本比较
- [源码解析]|[源码解析] NVIDIA HugeCTR,GPU版本参数服务器---(3)
- javaweb|基于Servlet+jsp+mysql开发javaWeb学生成绩管理系统
- JavaScript|vue 基于axios封装request接口请求——request.js文件
- 韵达基于云原生的业务中台建设 | 实战派
- EasyOA|EasyOA 基于SSM的实现 未完成总结与自我批判