SpringBoot启动时加载方法



我的方法是通过 方式六 加载成功的。

springboot 启动类有两大核心: 一个是注解@SpringBootApplication,一个是main方法里面的SpringApplication.run。

1、通过main方法 启动springboot

2、首先进入SpringAplication类run方法

3、run方法新建SpringApplication对象

4、SpringApplication对象的run方法,首先创建并启动计时监控类

5、接着调用getRunListeners创建所有spring监听器

6、接着DefaultApplicationArguments初始化应用应用参数

7、接着prepareEnvironment根据运行监听器和参数准备spring环境

8、接着调用createApplicationContext方法创建应用上下文

9、通过prepareContext准备应用上下文

10、refreshContext方法刷新上下文(通过spring ioc模板方法初始化)

11、调用stop方法停止计时监控器类

12、调用started发布应用上下文 启动完成事件

13、callRunners方法执行所有runner运行器

14、调用running发布应用上下文就绪事件

15、最后返回应用上下文

方式一:实现ServletContextListener接口

1
        @Component
2        public class SpringBootInitialization1 implements ServletContextListener {
3              @Override
4          public void contextInitialized(ServletContextEvent sce) {
5          System.out.println("方式一:实现ServletContextListener接口");
6          }
7        }

方式二:方法上加注解@PostConstruct

1
2        @Component
3        public class SpringBootInitialization2 {
4              @PostConstruct
5              public static void init() {
6          System.out.println("方式二:方法上加注解@PostConstruct");
7              }
8
9        }

方式三:实现ServletContextAware接口

1
  @Component
2  public class SpringBootInitialization3 implements ServletContextAware {
3
4      @Override
5      public void setServletContext(ServletContext servletContext) {
6          System.out.println("方式三:实现ServletContextAware接口");
7      }
8
9  }

public class SpringBootInitialization3 implements ServletContextAware {

方式四:实现ApplicationListener接口

1
  @Component
2  public class SpringBootInitialization4 implements
  ApplicationListener<ContextRefreshedEvent> {
3
4      @Override
5      public void onApplicationEvent(ContextRefreshedEvent event) {
6          System.out.println("方式四:实现ApplicationListener<ContextRefreshedEvent>接口");
7      }
8
9  }

方式五:实现ApplicationRunner接口

1
  @Component
2  public class SpringBootInitialization5 implements ApplicationRunner {
3
4      @Override
5      public void run(ApplicationArguments args) throws Exception {
6          System.out.println("方式五:实现ApplicationRunner接口");
7      }
8
9  }

方式六:实现CommandLineRunner接口

1
  @Component
2  public class SpringBootInitialization6 implements CommandLineRunner {
3
4      @Override
5      public void run(String... args) throws Exception {
6          System.out.println("方式六:实现CommandLineRunner接口");
7
8      }
9
10  }