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

成都創(chuàng)新互聯(lián)公司長期為千余家客戶提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊從業(yè)經(jīng)驗10年,關(guān)注不同地域、不同群體,并針對不同對象提供差異化的產(chǎn)品和服務(wù);打造開放共贏平臺,與合作伙伴共同營造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為承德縣企業(yè)提供專業(yè)的成都做網(wǎng)站、網(wǎng)站設(shè)計、外貿(mào)營銷網(wǎng)站建設(shè),承德縣網(wǎng)站改版等技術(shù)服務(wù)。擁有10多年豐富建站經(jīng)驗和眾多成功案例,為您定制開發(fā)。
由于運維部門的需求,項目需要以war的形式放到tomcat運行 ,而不是原定的jar的方式運行
配置了一下午,也查了一下午的資料,以war的方式在Tomcat能運行,并且能訪問Controller,但是在返回html視圖時,找不到視圖模板。最終發(fā)現(xiàn)問題在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 打包方式配置
下一步是更新你的構(gòu)建配置,這樣你的項目將產(chǎn)生一個war包而不是jar包。如果你使用Maven,并使用spring-boot-starter-parent(為了配置Maven的war插件),所有你需要做的就是更改pom.xml的packaging為war:
<packaging>war</packaging>
如果你使用Gradle,你需要修改build.gradle來將war插件應(yīng)用到項目上:
apply plugin: 'war'
3、確保內(nèi)嵌的servlet容器不能干擾war包將部署的servlet容器
為了達(dá)到這個目的,你需要將內(nèi)嵌容器的依賴標(biāo)記為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返回頁面視圖,卻還不夠,還需要配置模板的參數(shù),這里我使用的是Thymeleaf ,所以就介紹Thymeleaf 的配置方式
4、Thymeleaf 的配置
如果你是用的.properties方式配置的 參數(shù),那么只需要在你的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
每一個配置項的具體意思就自己去查了,這里不細(xì)說, 如果你是用.yml的方式進(jìn)行配置項的話,那么需要在application.yml里面配置如下參數(shù):
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 就找不到默認(rèn)的templates 模板路徑了,所以這里需要重新指明一下,這個問題也困擾了我一下午加一晚上,剛剛才調(diào)完, 現(xiàn)在記錄下,后人謹(jǐn)記!!
總結(jié)
以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,謝謝大家對創(chuàng)新互聯(lián)的支持。如果你想了解更多相關(guān)內(nèi)容請查看下面相關(guān)鏈接
網(wǎng)頁名稱:SpringBoot使用Thymeleaf+Gradle構(gòu)建war到Tomcat
本文網(wǎng)址:http://chinadenli.net/article10/jiehdo.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供小程序開發(fā)、網(wǎng)站建設(shè)、搜索引擎優(yōu)化、外貿(mào)建站、面包屑導(dǎo)航、網(wǎng)站導(dǎo)航
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)