解决方案 1:
如果用的自己的Tomcat 部署项目 则要:
org.springframework.boot
spring-boot-starter-tomcat
provided //这就是让内嵌的tomcat失效
所以 启动会报tomcat 异常
而开发阶段我们用的是内嵌的 所以要 :
org.springframework.boot
spring-boot-starter-tomcat
解决方案 2:
其次 : 这是我这次出错的原因:
对springboot的依赖必须放在最前面!否则Springboot的内嵌tomcat无法启动!
必须放在 最前面 才可以 否则还会有一些什么jar冲突 之类的奇怪的异常
附带 SpringBoot war包运行的 方式 :
1.首先 让内嵌的 tomcat 失效
2.继承SpringBootServletInitializer
public class MyApplication extends SpringBootServletInitializer {
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
return builder.sources(MyApplication.class);
}
public static void main(String[] args) {
SpringApplication.run(MyApplication.class, args);
}
}
ServletInitializer是Servlet初始化器,意思是当本应用作为tomcat的一个webapp时,就调用configure函数,这是tomcat容器调用的,这时整个应用就相当于Servlet。
当作为SpringApplication运行时,会执行main函数,但是不会执行上面的configure函数
建议 : 无论 jar 还是 war 都可以采用这种方式 !
原文:https://www.cnblogs.com/zhyp/p/12984736.html