亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

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

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

Spring Boot使用Thymeleaf + Gradle構建war到Tomcat

發布時間:2020-09-07 12:59:56 來源:腳本之家 閱讀:218 作者:執筆記憶的空白 欄目:編程語言

Spring Boot 以Jar的方式部署啟動,這個不用介紹了, 之前也介紹了關于 Spring Boot + thymeleaf 的簡單使用 ,但是今天遇到一個問題, 我先描述下問題的場景:

由于運維部門的需求,項目需要以war的形式放到tomcat運行 ,而不是原定的jar的方式運行

配置了一下午,也查了一下午的資料,以war的方式在Tomcat能運行,并且能訪問Controller,但是在返回html視圖時,找不到視圖模板。最終發現問題在Thymeleaf的配置,話不多說,具體看操作步驟:

1、Spring boot 容器配置需要繼承 SpringBootServletInitializer 

這里我繼承的是web.suport下面的SpringBootServletInitializer

@SpringBootApplication
public class Application extends SpringBootServletInitializer {
  @Override
  protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
    return application.sources(Application.class);
  }
  public static void main(String[] args) throws Exception {
    SpringApplication.run(Application.class, args);
  }
}

2、更新你的Maven or Gradle 打包方式配置

下一步是更新你的構建配置,這樣你的項目將產生一個war包而不是jar包。如果你使用Maven,并使用spring-boot-starter-parent(為了配置Maven的war插件),所有你需要做的就是更改pom.xmlpackagingwar

<packaging>war</packaging>

如果你使用Gradle,你需要修改build.gradle來將war插件應用到項目上:

apply plugin: 'war'

3、確保內嵌的servlet容器不能干擾war包將部署的servlet容器

為了達到這個目的,你需要將內嵌容器的依賴標記為provided

如果使用Maven

<dependencies>
  <!-- … -->
  <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-tomcat</artifactId>
    <scope>provided</scope>
  </dependency>
  <!-- … -->
</dependencies>

如果使用Gradle

dependencies {
  // …
  providedRuntime 'org.springframework.boot:spring-boot-starter-tomcat'
  // …
}

以上步驟配置好,maven or Gradle 在build的時候就會打成war包,這里可能還需要注意一個編碼的問題,這個就大家自己去找了,具體詳情參照:Spring 源碼

配置好這些,確實能在Tomcat啟動了,但是對于Controller返回頁面視圖,卻還不夠,還需要配置模板的參數,這里我使用的是Thymeleaf ,所以就介紹Thymeleaf 的配置方式

4、Thymeleaf 的配置

如果你是用的.properties方式配置的 參數,那么只需要在你的application.properties配置下面加上:

# THYMELEAF (ThymeleafAutoConfiguration)
spring.thymeleaf.check-template-location=true
spring.thymeleaf.prefix=classpath:/templates/
spring.thymeleaf.suffix=.html
spring.thymeleaf.mode=HTML5
spring.thymeleaf.encoding=UTF-8
spring.thymeleaf.content-type=text/html
spring.thymeleaf.cache=false

每一個配置項的具體意思就自己去查了,這里不細說,  如果你是用.yml的方式進行配置項的話,那么需要在application.yml里面配置如下參數:

spring:
 thymeleaf:
  cache: false
  check-template-location: true
  prefix: classpath:/templates/
  suffix: .html
  mode: HTML5
  encoding: UTF-8
  content-type: text/html

其實重要的就是prefix,因為放到tomcat里面之后, Thymeleaf  就找不到默認的templates 模板路徑了,所以這里需要重新指明一下,這個問題也困擾了我一下午加一晚上,剛剛才調完, 現在記錄下,后人謹記!!

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對億速云的支持。如果你想了解更多相關內容請查看下面相關鏈接

向AI問一下細節

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

AI

丹凤县| 台东县| 沭阳县| 台州市| 喜德县| 金阳县| 顺昌县| 福清市| 邯郸市| 健康| 旬邑县| 岳普湖县| 利辛县| 东丽区| 新宾| 青岛市| 巴林右旗| 和田市| 随州市| 汽车| 饶平县| 沈阳市| 比如县| 扎鲁特旗| 阳春市| 肃宁县| 巨野县| 大足县| 静宁县| 云林县| 抚顺县| 霸州市| 乐东| 右玉县| 轮台县| 泽州县| 方山县| 岳普湖县| 剑川县| 永仁县| 修水县|