spring boot jar包tomcat内嵌方式启动
来源:互联网 发布:武汉发展前景知乎 编辑:程序博客网 时间:2024/05/22 12:20
因项目需要,将springMVC工程重构为springboot工程,并且需要用jar包内嵌tomcat的方式在Linux系统使用,
原来工程一直用的是WAR包模式,springMVC转springboot很顺利,基本一天完成了eclipse下本地启动运行正常。
在最后一步打jar,使用java -jar prj.jar运行时遇到了一个坑。
server,controller能够正常访问,但ViewResolver始终找不到正常页面,诡异的是本机dev开发环境下却是正常的,
就这个问题,竟然折腾了两天才搞定,记录如下:
正常配置
1.springboot mvc配置
@Configuration@EnableWebMvcpublic class MvcAdapterConfiguration extends WebMvcConfigurerAdapter {@Override public void addResourceHandlers(ResourceHandlerRegistry registry) { registry.addResourceHandler(ConfigUtil.getPropertyValue("fs.mapping")+"/**").addResourceLocations("file:"+ConfigUtil.getPropertyValue("fs.dir")+"/"); super.addResourceHandlers(registry); }@Override public void configureDefaultServletHandling( DefaultServletHandlerConfigurer configurer) { configurer.enable(); }@Overridepublic void configureViewResolvers(ViewResolverRegistry registry){registry.viewResolver(getViewResolverHTML());registry.viewResolver(getViewResolverJSP());super.configureViewResolvers(registry);}@Bean public ViewResolver getViewResolverHTML() { InternalResourceViewResolver resolver = new InternalResourceViewResolver(); resolver.setViewClass(InternalResourceView.class); resolver.setOrder(0); resolver.setPrefix("/views/html/pages/"); resolver.setContentType("text/html;charset=UTF-8"); return resolver; }@Bean public ViewResolver getViewResolverJSP() { InternalResourceViewResolver resolver = new InternalResourceViewResolver(); resolver.setOrder(1); resolver.setPrefix("/views/jsp/pages/"); return resolver; }}
<plugins><!--打包成jar --><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><version>1.4.2.RELEASE</version><extensions>true</extensions><executions><execution><goals><goal>repackage</goal></goals></execution></executions><configuration><mainClass>${start-class}</mainClass><layout>JAR</layout><fork>true</fork></configuration></plugin><!-- java编译插件 --><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><configuration><source>1.8</source><target>1.8</target><encoding>UTF-8</encoding></configuration></plugin><!-- 资源文件拷贝插件 --><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-resources-plugin</artifactId><configuration><encoding>UTF-8</encoding></configuration></plugin></plugins>
3.(坑点)
POM中jar包引用要点:
原本工程下引了
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> </dependency>最后发现,原来通过内嵌的jar方式启动tomcat,需要用的包不是springboot提供的这个包,而是apache提供的另外一个包
<dependency><groupId>org.apache.tomcat.embed</groupId><artifactId>tomcat-embed-jasper</artifactId></dependency>必须要注意把<scope>删掉,否则不会打包到jar包中。
阅读全文