方式一
- 默认的application启动,在创建项目时自动生成application启动类,直接run执行即可。
@SpringBootApplication@Slf4jpublic class Application {public static void main(String[] args) {SpringApplication.run(Application.class, args);log.info("application is running...");}}
方式二:使用外置的tomcat启动
默认的启动类要继承 SpringBootServletInitiailzer 类,并复写 configure() 方法。
@SpringBootApplicationpublic class FileuploadApplication extends SpringBootServletInitializer {public static void main(String[] args) {SpringApplication.run(FileuploadApplication.class, args);}@Overrideprotected 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容器了。
