方式一:
默認的application啟動,在創建項目時自動生成application啟動類,直接run執行即可。
方式二:使用外置的tomcat啟動
默認的啟動類要繼承SpringBootServletInitiailzer類,並復寫configure()方法。
@SpringBootApplication
public class FileuploadApplication extends SpringBootServletInitializer {
public static void main(String[] args) {
SpringApplication.run(FileuploadApplication.class, args);
}
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
return super.configure(builder);
}
2.添加本地tomcat並進行配置
SpringBootServletInitializer的執行過程,簡單來說就是通過SpringApplicationBuilder構建並封裝SpringApplication對象,並最終調用SpringApplication的run方法的過程。
spring boot就是為了簡化開發的,也就是用注解的方式取代了傳統的xml配置。
SpringBootServletInitializer就是原有的web.xml文件的替代。
使用了嵌入式Servlet,默認是不支持jsp。
SpringBootServletInitializer 可以使用外部的Servlet容器,使用步驟:
1.必須創建war項目,需要創建好web項目的目錄。2.嵌入式Tomcat依賴scope指定provided。3.編寫SpringBootServletInitializer類子類,並重寫configure方法。
public class ServletInitializer extends SpringBootServletInitializer {
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
return application.sources(SpringBoot04WebJspApplication.class);
}
}
4.啟動服務器。
jar包和war包啟動區別
jar包:執行SpringBootApplication的run方法,啟動IOC容器,然后創建嵌入式Servlet容器
war包: 先是啟動Servlet服務器,服務器啟動Springboot應用(springBootServletInitizer),然后啟動IOC容器
SpringBootServletInitializer實例執行onStartup方法的時候會通過createRootApplicationContext方法來執行run方法,接下來的過程就同以jar包形式啟動的應用的run過程一樣了,在內部會創建IOC容器並返回,只是以war包形式的應用在創建IOC容器過程中,不再創建Servlet容器了。
原文鏈接:https://blog.csdn.net/yanyuan1993/article/details/82108829