springboot默认内嵌有tomcat,所以可以不依赖外部的tomcat容器,直接打成jar包,运行即可。但实际开发中更多的可能需要多个项目使用同一个tomcat容器,此时,需要将springboot项目打为war包而不再是jar包。springboot提供了以下步骤来做修改。
本文使用gradle作为springboot的构建工具。
1. 修改项目的启动类
1. 启动类继承SpringBootServletInitializer
2. 重写configure方法
3. 在入口函数中启动项目
@SpringBootApplication
public class ServletInitializer extends SpringBootServletInitializer {
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
return application.sources(ServletInitializer.class);
}
public static void main(String[] args) {
SpringApplication.run(ServletInitializer.class, args);
}
}
2. gradle中配置打为war包
apply plugin: 'war'
3. provided方式依赖内置的tomcat
provided('org.springframework.boot:spring-boot-starter-tomcat')
以上3步,即可完成打为war包。
注意事项
我在打完war包部署到服务器后,发现并不能正常访问借口拿到数据,所有接口会报404的错误。原因是请求前缀的问题,在springboot中,可以手动配置请求前缀,不会受打包包名的影响,但在在外置tomcat容器中,请求的项目路径是会受到打包的包名影响的,例如在springboot中配置前缀为[[snowson]],则请求的url为
http://域名/snowson/具体接口
无论打包的包名是什么。而在外置tomcat中,若打包报名为snowson_main,正确的访问路径为
http://域名/snowson_main/具体接口
所以,最好是打出预期接口路径的报名,避免不必要的错误。
网友评论