91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

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

南安市| 辽宁省| 旬邑县| 甘孜县| 长治县| 右玉县| 沙田区| 安多县| 三台县| 南靖县| 遵化市| 龙川县| 奉贤区| 黑河市| 班玛县| 洱源县| 遂平县| 略阳县| 泗阳县| 简阳市| 东乌珠穆沁旗| 宿州市| 神木县| 海原县| 保定市| 大丰市| 洛阳市| 金沙县| 那曲县| 惠来县| 叙永县| 灵川县| 松江区| 和硕县| 云南省| 鱼台县| 浏阳市| 龙井市| 石河子市| 莱西市| 运城市|