麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 開發 > 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教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 毛片免费视频在线观看 | 加勒比综合 | 美女扒开腿让男生桶爽网站 | 亚洲一区二区三区四区精品 | 日本欧美在线播放 | 成人精品一区二区 | 99激情| 久久久在线免费观看 | 欧产日产国产精品99 | 亚洲精品有限 | 免费在线中文字幕 | 欧美成人精品一级 | 中文字幕在线视频日本 | 精品黑人一区二区三区国语馆 | 黄色免费在线视频网站 | 久久久久久久九九九九 | 黄色av网 | 久久精品23 | 狠狠婷婷综合久久久久久妖精 | 久久久久久片 | 日韩黄色片在线观看 | 91精品国产综合久久婷婷香蕉 | 欧美a视频| avlululu| 亚洲第一成人在线观看 | 欧美一级一区二区三区 | 美女很黄很黄免费的 | 久久色网站 | 91精品国产综合久久久动漫日韩 | 国产毛片在线 | 久草最新在线 | 亚洲一区二区在线免费 | 91九色精品国产 | 9999久久| 免费男女视频 | 国产精品一区二区三区在线看 | 国产在线a | 黄色免费不卡视频 | www.guochan | 精品在线视频播放 | 久久精品79国产精品 |