SpringBoot 自定义初始化方案及启动顺序
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初始化数据。。。
本文是原创文章,采用 CC BY-NC-ND 4.0 协议,完整转载请注明来自 程序员小航
评论
匿名评论
隐私政策
你无需删除空行,直接评论以获取最佳展示效果