ServletContextListener初始化

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;

import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;

/**
 * @author hubz
 * @date 2022/1/12 23:38
 **/
@Component
public class ServletContextListenerInit implements ServletContextListener {
    private static final Logger LOG = LoggerFactory.getLogger(ServletContextListenerInit.class);

    @Override
    public void contextInitialized(ServletContextEvent servletContextEvent) {
        LOG.info("ServletContextListener初始化数据。。。");
    }
}

InitializingBean初始化

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.stereotype.Component;

/**
 * @author hubz
 * @date 2022/1/12 23:38
 **/
@Component
public class InitializingBeanInit implements InitializingBean {

    private static final Logger LOG = LoggerFactory.getLogger(InitializingBeanInit.class);

    @Override
    public void afterPropertiesSet() throws Exception {
        LOG.info("InitializingBean初始化数据。。。");
    }
}

ApplicationRunner初始化

可以使用@Order(2)来控制先后顺序

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.boot.ApplicationArguments;
import org.springframework.boot.ApplicationRunner;
import org.springframework.stereotype.Component;

/**
 * @author hubz
 * @date 2022/1/12 23:37
 **/
@Component
public class ApplicationRunnerInit implements ApplicationRunner {

    private static final Logger LOG = LoggerFactory.getLogger(ApplicationRunnerInit.class);

    @Override
    public void run(ApplicationArguments args) throws Exception {
        LOG.info("ApplicationRunner初始化数据。。。");
    }
}

CommandLineRunner初始化

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.boot.CommandLineRunner;
import org.springframework.stereotype.Component;

/**
 * @author hubz
 * @date 2022/1/12 23:36
 **/
@Component
public class CommandLineRunnerInit implements CommandLineRunner {

    private static final Logger LOG = LoggerFactory.getLogger(CommandLineRunnerInit.class);

    @Override
    public void run(String... args) throws Exception {
        LOG.info("CommandLineRunner初始化数据。。。");
    }
}

执行顺序

2022-01-12 23:42:19.205  INFO 23968 --- [           main] o.a.c.c.C.[Tomcat].[localhost].[/]       : Initializing Spring embedded WebApplicationContext
2022-01-12 23:42:19.205  INFO 23968 --- [           main] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 1768 ms
2022-01-12 23:42:19.229  INFO 23968 --- [           main] c.h.i.I.ServletContextListenerInit       : ServletContextListener初始化数据。。。
2022-01-12 23:42:19.239  INFO 23968 --- [           main] c.h.init.InitData.InitializingBeanInit   : InitializingBean初始化数据。。。
2022-01-12 23:42:19.331  INFO 23968 --- [           main] o.s.s.concurrent.ThreadPoolTaskExecutor  : Initializing ExecutorService 'applicationTaskExecutor'
2022-01-12 23:42:19.464  INFO 23968 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat started on port(s): 8080 (http) with context path ''
2022-01-12 23:42:19.472  INFO 23968 --- [           main] .i.SpringBootInitializingBeanApplication : Started SpringBootInitializingBeanApplication in 2.427 seconds (JVM running for 3.698)
2022-01-12 23:42:19.473  INFO 23968 --- [           main] c.h.init.InitData.ApplicationRunnerInit  : ApplicationRunner初始化数据。。。
2022-01-12 23:42:19.474  INFO 23968 --- [           main] c.h.init.InitData.CommandLineRunnerInit  : CommandLineRunner初始化数据。。。