春天的引导使用Thymeleaf + Gradle构建到Tomcat的战争

  

弹簧引导以Jar的方式部署启动,这个不用介绍了,之前也介绍了关于弹簧引导+ thymeleaf的简单使用,但是今天遇到一个问题,我先描述下问题的场景:

  

由于运维部门的需求,项目需要以<代码> 战争的形式放到tomcat <代码> 运行,,而不是原定的jar <代码> 的方式运行

  

配置了一下午,也查了一下午的资料,以<代码> 战争的方式在Tomcat <代码> 能运行,并且能访问<代码>控制器> Thymeleaf>   

<强> 1,弹簧引导容器配置需要继承,SpringBootServletInitializer 

  

这里我继承的是<代码> web.suport> SpringBootServletInitializer>         @SpringBootApplication   公共类的应用程序扩展SpringBootServletInitializer {   @Override   保护SpringApplicationBuilder配置(SpringApplicationBuilder应用程序){   返回application.sources (Application.class);   }   公共静态void main (String [] args){抛出异常   SpringApplication.run (Application.class, args);   }   }      

<强> 2,更新你的Maven或Gradle打包方式配置

  

下一步是更新你的构建配置,这样你的项目将产生一个战争包而不是jar包。如果你使用<代码> Maven> spring-boot-starter-parent> pom.xml 的<代码> 包装为战争<代码> :

        & lt; packaging> war      

如果你使用<代码> Gradle> build.gradle> 战争插件应用到项目上:

        应用插件:“战争”      

<强> 3,确保内嵌的servlet容器不能干扰战争包将部署的servlet容器

  

为了达到这个目的,你需要将内嵌容器的依赖标记为<代码>

  

如果使用Maven :<代码>

        & lt; dependencies>   & lt; !——…比;   & lt; dependency>   & lt; groupId> org.springframework.boot   & lt; artifactId> spring-boot-starter-tomcat   & lt; scope> provided   & lt;/dependency>   & lt; !——…比;   & lt;/dependencies>      

如果使用<代码> Gradle :

        依赖关系{//?   providedRuntime org.springframework.boot: spring-boot-starter-tomcat”//?   }      

以上步骤配置好,maven或Gradle在<代码> 包,这里可能还需要注意一个编码的问题,这个就大家自己去找了,具体详情参照:春源码

  

配置好这些,确实能在Tomcat <代码> 启动了,但是对于控制器<代码> 返回页面视图,却还不够,还需要配置模板的参数,这里我使用的是<代码> Thymeleaf> Thymeleaf>   

<强> 4,Thymeleaf的配置

  

如果你是用的。<代码>属性> application.properties>         # THYMELEAF (ThymeleafAutoConfiguration)   spring.thymeleaf.check-template-location=true   spring.thymeleaf.prefix=类路径://模板   spring.thymeleaf.suffix=. html   HTML5 spring.thymeleaf.mode=spring.thymeleaf.encoding=utf - 8   spring.thymeleaf.content-type=text/html   spring.thymeleaf.cache=false      

每一个配置项的具体意思就自己去查了,这里不细说,,如果你是用<代码> .yml> application.yml>         春天:   thymeleaf:   缓存:假   check-template-location:真   前缀:类路径://模板   后缀:. html   模式:HTML5   utf - 8编码:   的content - type: text/html      

其实重要的就是<代码>前缀> 里面之后,,<代码> Thymeleaf ,> 模模板板路径了,所以这里需要重新指明一下,这个问题也困扰了我一下午加一晚上,刚刚才调完,现在记录下,后人谨记! !

  

<强>总结

春天的引导使用Thymeleaf + Gradle构建到Tomcat的战争