Spring Boot —— Thymeleaf + Gradle run on Tomcat(war形式)
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.xml的packaging為war:
<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
相關文章
- 三分鐘把spring boot打成war包部署到tomcat中Spring BootTomcat
- Spring Boot中實現Thymeleaf通知Spring Boot
- Spring Boot(四):Thymeleaf 使用詳解Spring Boot
- Spring Boot (四)模板引擎Thymeleaf整合Spring Boot
- 如何將War檔案部署到Spring Boot嵌入式的Tomcat中 - Vojtech RuzickaSpring BootTomcat
- Spring Boot+Spring Security+Thymeleaf 簡單教程Spring Boot
- spring boot 配置外接tomcatSpring BootTomcat
- Spring Boot 和 Thymeleaf 實現 Java 版 HTMXSpring BootJava
- 極簡 Spring Boot 整合 Thymeleaf 頁面模板Spring Boot
- 使用gradle搭建spring boot專案GradleSpring Boot
- Spring Boot中Thymeleaf和htmx助手工具庫Spring Boot
- Tomcat 部署時 war 和 war exploded 區別Tomcat
- Tomcat部署時war和war exploded區別Tomcat
- springboot gradle demo (使用 Gradle 構建的 Spring Boot專案)Spring BootGradle
- Spring Boot開發(Gradle+註解)Spring BootGradle
- 使用gradle管理spring-boot專案GradleSpringboot
- Gradle快速構建Spring Boot專案GradleSpring Boot
- [maven][spring boot] mvn spring-boot:run啟動時,指定pom檔案MavenSpring Boot
- Maven部署war至TomcatMavenTomcat
- Spring Boot 內嵌容器 Tomcat / UndertowSpring BootTomcat
- spring boot 打war包後沒有配置檔案Spring Boot
- Spring Boot 把 Maven 幹掉了,擁抱 Gradle!Spring BootMavenGradle
- Spring Boot 將jar包釋出方式改為War包Spring BootJAR
- Spring Boot專案部署到外部TomcatSpring BootTomcat
- 【IDEA小技巧】Tomcat部署 war和war exploded的區別IdeaTomcat
- spring boot: 熱部署(一) run as – java application (spring-loader-1.2.4.RELEASE.jar)Spring Boot熱部署JavaAPPJAR
- springboot 整合外部tomcat war包部署方式Spring BootTomcat
- SpringBoot配置外部Tomcat並打war包Spring BootTomcat
- Spring Boot中Tomcat是怎麼啟動的Spring BootTomcat
- Idea下構建基於Gradle的Spring Boot專案IdeaGradleSpring Boot
- 細品 Spring Boot+Thymeleaf,還有這麼多好玩的細節Spring Boot
- spring boot 載入web容器tomcat流程原始碼分析Spring BootWebTomcat原始碼
- Web Socket 效能對比——Spring Boot vs Tomcat vs NettyWebSpring BootTomcatNetty
- Spring Boot 學習系列(11)—tomcat引數配置建Spring BootTomcat
- 構建第一個基於 Gradle 的 Spring Boot 專案GradleSpring Boot
- 實戰Spring Boot 2.0系列(一) – 使用Gradle構建Docker映象Spring BootGradleDocker
- Gradle進階:1: 結合spring boot進行web開發GradleSpring BootWeb
- 實戰Spring Boot 2.0系列(一) - 使用Gradle構建Docker映象Spring BootGradleDocker
- Netweaver的埠號和Spring boot內嵌的Tomcat埠Spring BootTomcat