方式一

    • 默认的application启动,在创建项目时自动生成application启动类,直接run执行即可。
      1. @SpringBootApplication
      2. @Slf4j
      3. public class Application {
      4. public static void main(String[] args) {
      5. SpringApplication.run(Application.class, args);
      6. log.info("application is running...");
      7. }
      8. }

    方式二:使用外置的tomcat启动

    默认的启动类要继承 SpringBootServletInitiailzer 类,并复写 configure() 方法。

    1. @SpringBootApplication
    2. public class FileuploadApplication extends SpringBootServletInitializer {
    3. public static void main(String[] args) {
    4. SpringApplication.run(FileuploadApplication.class, args);
    5. }
    6. @Override
    7. protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
    8. return super.configure(builder);
    9. }
    10. }

    jar 包和 war 包启动区别

    • jar 包:执行 SpringBootApplication 的run方法,启动 IOC 容器,然后创建嵌入式 Servlet 容器
    • war 包: 先是启动 Servlet 服务器,服务器启动 Springboot 应用(springBootServletInitizer),然后启动 IOC 容器

    SpringBootServletInitializer 实例执行 onStartup 方法的时候会通过 createRootApplicationContext 方法来执行run方法,接下来的过程就同以jar包形式启动的应用的run过程一样了,在内部会创建IOC容器并返回,只是以war包形式的应用在创建IOC容器过程中,不再创建Servlet容器了。