方式一
- 默认的application启动,在创建项目时自动生成application启动类,直接run执行即可。
@SpringBootApplication
@Slf4j
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
log.info("application is running...");
}
}
方式二:使用外置的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);
}
}
jar 包和 war 包启动区别
- jar 包:执行 SpringBootApplication 的
run
方法,启动 IOC 容器,然后创建嵌入式 Servlet 容器 - war 包: 先是启动 Servlet 服务器,服务器启动 Springboot 应用(springBootServletInitizer),然后启动 IOC 容器
SpringBootServletInitializer 实例执行 onStartup
方法的时候会通过 createRootApplicationContext
方法来执行run
方法,接下来的过程就同以jar包形式启动的应用的run过程一样了,在内部会创建IOC容器并返回,只是以war包形式的应用在创建IOC容器过程中,不再创建Servlet容器了。