中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Spring Boot1.5X怎么升級到2.0

發布時間:2022-03-14 16:16:34 來源:億速云 閱讀:334 作者:iii 欄目:web開發

這篇文章主要介紹了Spring Boot1.5X怎么升級到2.0的相關知識,內容詳細易懂,操作簡單快捷,具有一定借鑒價值,相信大家閱讀完這篇Spring Boot1.5X怎么升級到2.0文章都會有所收獲,下面我們一起來看看吧。

前言

依賴 JDK 版本升級

2.x 至少需要 JDK 8 的支持,2.x 里面的許多方法應用了 JDK 8 的許多高級新特性,所以你要升級到 2.0 版本,先確認你的應用必須兼容 JDK 8。

另外,2.x 開始了對 JDK 9 的支持。

第三方類庫升級

2.x 對第三方類庫升級了所有能升級的穩定版本,一些值得關注的類庫升級我給列出來了。

1) Spring Framework 5+

2) Tomcat 8.5+

3) Flyway 5+

4) Hibernate 5.2+

5) Thymeleaf 3+

啟動類報錯

問題:

啟動類SpringBootServletInitializer標紅報錯,導入的類不對。

原因:

Spring Boot 部署到 Tomcat 中去啟動時需要在啟動類添加SpringBootServletInitializer,2.0 和 1.0 有區別。

解決方案:

package com.dudu;

import com.dudu.util.MyMapper;

import org.mybatis.spring.annotation.MapperScan;

import org.springframework.boot.SpringApplication;

import org.springframework.boot.autoconfigure.SpringBootApplication;

import org.springframework.boot.builder.SpringApplicationBuilder;

import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;

import org.springframework.transaction.annotation.EnableTransactionManagement;

import javax.sql.DataSource;

@SpringBootApplication

//啟注解事務管理

@EnableTransactionManagement // 啟注解事務管理,等同于xml配置方式的 <tx:annotation-driven />

@MapperScan(basePackages = "com.dudu.dao", markerInterface = MyMapper.class)

public class Application extends SpringBootServletInitializer {

@Override

protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {

return application.sources(Application.class);

}

public static void main(String[] args) {

SpringApplication.run(Application.class, args);

}

}

配置文件報錯

問題:

配置文件中項目名稱配置報錯:server.context-path: /spring

原因:

大量的Servlet專屬的server.* properties被移到了server.servlet下:

由此可以看出一些端倪,那就是server不再是只有servlet了,還有其他的要加入。

解決方案:

server.context-path: /spring改成server.servlet.context-path: /spring既可

Web Starter 作為傳遞依賴

問題:

工程用的模板是thymeleaf,啟動報錯提示找不到spring-boot-starter-web

原因:

以前有幾個 Spring Boot starter 是依賴于 Spring MVC 而傳遞的spring-boot-starter-web。在 Spring WebFlux 新的支持下,spring-boot-starter-mustache,spring-boot-starter-freemarker并spring-boot-starter-thymeleaf不再依賴它。開發者有責任選擇和添加spring-boot-starter-web或spring-boot-starter-webflux。

解決方案:

導入spring-boot-starter-web既可

<dependency>

 <groupId>org.springframework.boot</groupId>

 <artifactId>spring-boot-starter-web</artifactId>

</dependency>

Thymeleaf 3.0 默認不包含布局模塊

問題:

啟動項目的時候發現首頁空白,查看后臺也沒有任何的報錯信息

原因:

Spring Boot 2.0 中spring-boot-starter-thymeleaf 包默認并不包含布局模塊,需要使用的時候單獨添加。

解決方案:

<dependency>

 <groupId>nz.net.ultraq.thymeleaf</groupId>

 <artifactId>thymeleaf-layout-dialect</artifactId>

</dependency>

攔截器過時

問題:

升級后,WebMvcConfigurerAdapter提示過時

原因:

升級后的springBoot,使用了java8的特性 default 方法,所以直接實現 WebMvcConfigurer 這個接口即可。

解決方案:

舊:

public class MyWebMvcConfigurerAdapter extends WebMvcConfigurerAdapter

新:

public class MyWebMvcConfigurerAdapter implements WebMvcConfigurer

靜態資源被攔截

問題:

訪問系統的時候登錄樣式沒有加載

原因:

1.5版本時候META-INF/resources / resources / static / public 都是spring boot 認為靜態資源應該放置的位置,會自動去尋找靜態資源,而在spring boot 2.0則對靜態資源也進行了攔截,當攔截器攔截到請求之后,但controller里并沒有對應的請求時,該請求會被當成是對靜態資源的請求。此時的handler就是 ResourceHttpRequestHandler,就會拋出上述錯誤。

解決方案:

解決辦法就是,在攔截器那里排除靜態資源的請求路徑

/** 

* 攔截器 

* @param registry 

*/ 

@Override 

public void addInterceptors(InterceptorRegistry registry) { 

// addPathPatterns 用于添加攔截規則 

// excludePathPatterns 用戶排除攔截 

registry.addInterceptor(new MyInterceptor()).addPathPatterns("/**").excludePathPatternss("/toLogin","/login","/assets/**","/js/**");

}

assets就是我放靜態文件的目錄

全局異常特殊處理

問題:

上一篇提到過的有些錯誤你可能想特殊對待處理的,現在對應代碼標紅,找不到對應的類

原因:

新版本后該方法去掉了,需要換成新的方法處理

解決方案:

舊代碼:

@Configuration

 public class ContainerConfig {

 @Bean

 public EmbeddedServletContainerCustomizer containerCustomizer(){

 return new EmbeddedServletContainerCustomizer(){

 @Override

 public void customize(ConfigurableEmbeddedServletContainer container) {

 container.addErrorPages(new ErrorPage(HttpStatus.INTERNAL_SERVER_ERROR, "/error/500"));

 container.addErrorPages(new ErrorPage(HttpStatus.NOT_FOUND, "/error/404"));

 }

 };

 }

 }

新代碼:

@Configuration

public class ContainerConfig implements ErrorPageRegistrar {

 @Override

 public void registerErrorPages(ErrorPageRegistry registry) {

 ErrorPage[] errorPages = new ErrorPage[2];

 errorPages[0] = new ErrorPage(HttpStatus.INTERNAL_SERVER_ERROR, "/error/500");

 errorPages[1] = new ErrorPage(HttpStatus.NOT_FOUND, "/error/404");

 registry.addErrorPages(errorPages);

 }

}

暫時處理了以上幾個錯誤后,項目就可以啟動了,還有其他隱藏的錯誤后續遇到了再補充。

關于“Spring Boot1.5X怎么升級到2.0”這篇文章的內容就介紹到這里,感謝各位的閱讀!相信大家對“Spring Boot1.5X怎么升級到2.0”知識都有一定的了解,大家如果還想學習更多知識,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

都兰县| 营山县| 皋兰县| 定兴县| 泾阳县| 乐东| 台东县| 乐至县| 定襄县| 军事| 天柱县| 遂昌县| 普宁市| 海淀区| 简阳市| 太保市| 乌拉特中旗| 名山县| 神池县| 镶黄旗| 宿迁市| 抚宁县| 砀山县| 平和县| 蒙城县| 兴安盟| 察隅县| 自贡市| 青岛市| 互助| 抚顺县| 长子县| 施秉县| 苏尼特右旗| 霍州市| 吴川市| 昌图县| 广水市| 高碑店市| 敦煌市| 东平县|