国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > Java > 正文

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

2024-07-14 08:43:06
字體:
來源:轉載
供稿:網友

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

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

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

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

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

@SpringBootApplicationpublic 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=truespring.thymeleaf.prefix=classpath:/templates/spring.thymeleaf.suffix=.htmlspring.thymeleaf.mode=HTML5spring.thymeleaf.encoding=UTF-8spring.thymeleaf.content-type=text/htmlspring.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 模板路徑了,所以這里需要重新指明一下,這個問題也困擾了我一下午加一晚上,剛剛才調完, 現在記錄下,后人謹記!!

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對VeVb武林網的支持。


注:相關教程知識閱讀請移步到JAVA教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 东明县| 宝山区| 江永县| 印江| 青神县| 石台县| 公主岭市| 洛宁县| 陵川县| 黄冈市| 卓尼县| 博乐市| 宣城市| 昌图县| 神农架林区| 湘潭市| 临桂县| 鹿泉市| 铜鼓县| 竹北市| 丽水市| 牡丹江市| 湘潭市| 林口县| 视频| 会泽县| 皋兰县| 沂南县| 沁水县| 宝山区| 易门县| 二手房| 襄汾县| 怀宁县| 祁阳县| 杭锦后旗| 博爱县| 克什克腾旗| 沈阳市| 深圳市| 桦甸市|