基于SpringBoot2.0版本與老版本的區(qū)別
SpringBoot2.0版本新特性
以Java 8 為基準
Spring Boot 2.0 要求Java 版本必須8以上, Java 6 和 7 不再支持。
內(nèi)嵌容器包結(jié)構(gòu)調(diào)整
為了支持reactive使用場景,內(nèi)嵌的容器包結(jié)構(gòu)被重構(gòu)了的幅度有點大。EmbeddedServletContainer被重命名為WebServer,并且org.springframework.boot.context.embedded 包被重定向到了org.springframework.boot.web.embedded包下。
舉個例子,如果你要使用TomcatEmbeddedServletContainerFactory回調(diào)接口來自定義內(nèi)嵌Tomcat容器,你現(xiàn)在應(yīng)該使用TomcatServletWebServerFactory。
Servlet-specific 的server properties調(diào)整
大量的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 |
由此可以看出一些端倪,那就是server不再是只有servlet了,還有其他的要加入。
Actuator 默認映射
ctuator的端點(endpoint)現(xiàn)在默認映射到/application,比如,/info 端點現(xiàn)在就是在/application/info。但你可以使用management.context-path來覆蓋此默認值。
Spring Loaded不再支持
由于Spring Loaded項目已被移到了attic了,所以不再支持Spring Loaded了?,F(xiàn)在建議你去使用Devtools。Spring Loaded不再支持了。
支持Quartz Scheduler
Spring Boot 2 針對Quartz調(diào)度器提供了支持。你可以加入spring-boot-starter-quartz starter來啟用。而且支持基于內(nèi)存和基于jdbc兩種存儲。
OAuth 2.0 支持
Spring Security OAuth 項目中的功能將會遷移到Spring Security中。將會OAuth 2.0。
支持Spring WebFlux
WebFlux 模塊的名稱是 spring-webflux,名稱中的 Flux 來源于 Reactor 中的類 Flux。該模塊中包含了對反應(yīng)式 HTTP、服務(wù)器推送事件和 WebSocket 的客戶端和服務(wù)器端的支持。
對于開發(fā)人員來說,比較重要的是服務(wù)器端的開發(fā),這也是本文的重點。
在服務(wù)器端,WebFlux 支持兩種不同的編程模型:第一種是 Spring MVC 中使用的基于 Java 注解的方式;第二種是基于 Java 8 的 lambda 表達式的函數(shù)式編程模型。這兩種編程模型只是在代碼編寫方式上存在不同。
它們運行在同樣的反應(yīng)式底層架構(gòu)之上,因此在運行時是相同的。
WebFlux 需要底層提供運行時的支持,WebFlux 可以運行在支持 Servlet 3.1 非阻塞 IO API 的 Servlet 容器上,或是其他異步運行時環(huán)境,如 Netty 和 Undertow。
版本要求
Jetty- 要求Jetty最低版本為9.4。
Tomcat- 要求Tomcat最低版本為8.5。
Hibernate- 要求Hibernate最低版本為5.2。
Gradle- 要求Gradle最低版本為3.4。
SendGrid- SendGrid最低支持版本是3.2。為了支持這次升級,username和password已經(jīng)被干掉了。因為API key現(xiàn)在是唯一支持的認證方式。
SpringBoot版本問題
IDEA創(chuàng)建springboot中啟動問題
Exception in thread “main” java.lang.AbstractMethodError:
org.springframework.boot.context.config.ConfigFileApplicationListener.supportsSourceType(Ljava/lang/Class;)Z

大家度知道這是一個springboot的啟動類
這是maven依賴
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.1.3.RELEASE</version> <relativePath/> <!-- lookup parent from repository --> </parent> <groupId>com.example</groupId> <artifactId>demo</artifactId> <version>0.0.1-SNAPSHOT</version> <name>demo</name> <description>Demo project for Spring Boot</description> <properties> <java.version>1.8</java.version> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> <exclusions> <exclusion> <artifactId>spring-context</artifactId> <groupId>org.springframework</groupId> </exclusion> </exclusions> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <optional>true</optional> </dependency> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.1.0</version> </dependency> <dependency> <groupId>com.h2database</groupId> <artifactId>h2</artifactId> <scope>runtime</scope> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>4.3.2.RELEASE</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> </project>
看起來萬事俱備,也很符合springboot啟動需要,那就啟動吧
Exception in thread "main" java.lang.AbstractMethodError:
org.springframework.boot.context.config.ConfigFileApplicationListener.supportsSourceType(Ljava/lang/Class;)Z
結(jié)果給你拋出這樣的異常
此時不慌,原因有兩個(我所能想到的,不喜勿噴)
- jar沖突
- springboot的版本問題
一、解決方案
在IDEA中下載maven helper插件,方便排查jar沖突,

重啟后的點擊pom會出現(xiàn)Dependency Analyzer

排查沖突后再次運行程序,出現(xiàn)如下情況

二、解決方案
像魔鬼一樣還是沒有解決,這時候瘋狂的上百度搜,依然沒有找到辦法解決,最后在拉屎的瞬間想到springboot 有一個 1.5.6的版本,出于好奇將2.1.3版本修改為1.5.6版本如下
<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.5.6.RELEASE</version> <relativePath/> <!-- lookup parent from repository --> </parent>
看到下面的圖,恭喜你,springboot啟動成功

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Spring Boot中使用Spring-data-jpa實現(xiàn)數(shù)據(jù)庫增刪查改
本篇文章主要介紹了Spring Boot中使用Spring-data-jpa實現(xiàn)增刪查改,非常具有實用價值,需要的朋友可以參考下。2017-03-03
java高級用法之綁定CPU的線程Thread?Affinity簡介
java線程thread affinity是用來將java代碼中的線程綁定到CPU特定的核上,用來提升程序運行的性能,這篇文章主要介紹了java高級用法之綁定CPU的線程thread affinity的相關(guān)知識,需要的朋友可以參考下2022-05-05
SpringBoot ApplicationContextAware拓展接口使用詳解
當一個類實現(xiàn)了這個接口(ApplicationContextAware)之后,這個類就可以方便獲得ApplicationContext中的所有bean。換句話說,就是這個類可以直接獲取spring配置文件中,所有有引用到的bean對象2023-04-04
Java 線程池ExecutorService詳解及實例代碼
這篇文章主要介紹了Java 線程池ExecutorService詳解及實例代碼的相關(guān)資料,線程池減少在創(chuàng)建和銷毀線程上所花的時間以及系統(tǒng)資源的開銷.如果不使用線程池,有可能造成系統(tǒng)創(chuàng)建大量線程而導(dǎo)致消耗系統(tǒng)內(nèi)存以及”過度切換“2016-11-11
Spring實現(xiàn)Logback日志模板設(shè)置動態(tài)參數(shù)功能
本文介紹如何在Spring應(yīng)用中實現(xiàn)Logback日志模板的動態(tài)參數(shù)設(shè)置,通過設(shè)計traceId鏈路標識,將其動態(tài)添加到日志輸出中,從而實現(xiàn)簡易的鏈路追蹤功能,感興趣的朋友跟隨小編一起看看吧2024-11-11
Springmvc發(fā)送json數(shù)據(jù)轉(zhuǎn)Java對象接收
這篇文章主要介紹了Springmvc發(fā)送json數(shù)據(jù)轉(zhuǎn)Java對象接收,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2020-10-10
Java中List常用操作比for循環(huán)更優(yōu)雅的寫法示例
List是Java中比較常用的集合類,關(guān)于List接口有很多實現(xiàn)類,下面這篇文章主要給大家介紹了關(guān)于Java中List常用操作比for循環(huán)更優(yōu)雅的寫法,需要的朋友可以參考下2021-11-11
java 中newInstance()方法和new關(guān)鍵字的區(qū)別
這篇文章主要介紹了java 中newInstance()方法和new關(guān)鍵字的區(qū)別的相關(guān)資料,希望通過本文大家能掌握他們之家的區(qū)別與用法,需要的朋友可以參考下2017-09-09

