解決方案 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 都可以采用這種方式 !