SpringBoot的启动方式之SpringBootServletInitializer
第一天工作,看大佬写的源码的时候,突然发现在启动类下面还有一个类
public class ServletInitializer extends SpringBootServletInitializer {
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
return application.sources(DuanlinApplication.class);
}
}
在以前都是启动spring boot直接一个springboot启动类就可以,为什么突然多出来一个类呢?
@SpringBootApplication
@Import(Knife4jConfiguration.class)
public class DuanlinApplication {
public static void main(String[] args) {
SpringApplication.run(DuanlinApplication.class, args);
}
}
上网查询资料后才知道:原来是以前用的是springboot内嵌的tomcat跑的项目,而我做的这个项目是打成war的,用的外部的web容器跑的。
接下来总结一下这种方式启动springboot项目:
1.导入依赖:使用provided作用域导入tomcat / 打包方式war
<packaging>war</packaging>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>
解释providerd:
provided
provided意味着打包的时候可以不用包进去,别的设施(Web Container)会提供。事实上该依赖理论上可以参与编译,测试,运行等周期。相当于compile,但是在打包阶段做了exclude的动作。
2.把写好的项目打包
3.将war包部署到web容器中即可 或 利用idea直接部署到tomcat中
这里举例Tomcat