springboot啟動後執行某些動作
阿新 • • 發佈:2021-10-20
springboot啟動後執行某些動作
1.主要是springboot的啟動run方法裡呼叫了callRunners,會去呼叫實現了ApplicationRunner介面的類的方法
public ConfigurableApplicationContext run(String... args) { StopWatch stopWatch = new StopWatch(); stopWatch.start(); DefaultBootstrapContext bootstrapContext = createBootstrapContext(); ConfigurableApplicationContext context = null; configureHeadlessProperty(); SpringApplicationRunListeners listeners = getRunListeners(args); listeners.starting(bootstrapContext, this.mainApplicationClass); try { ApplicationArguments applicationArguments = new DefaultApplicationArguments(args); ConfigurableEnvironment environment = prepareEnvironment(listeners, bootstrapContext, applicationArguments); configureIgnoreBeanInfo(environment); Banner printedBanner = printBanner(environment); context = createApplicationContext(); context.setApplicationStartup(this.applicationStartup); prepareContext(bootstrapContext, context, environment, listeners, applicationArguments, printedBanner); refreshContext(context); afterRefresh(context, applicationArguments); stopWatch.stop(); if (this.logStartupInfo) { new StartupInfoLogger(this.mainApplicationClass).logStarted(getApplicationLog(), stopWatch); } listeners.started(context); callRunners(context, applicationArguments); } catch (Throwable ex) { handleRunFailure(context, ex, listeners); throw new IllegalStateException(ex); } try { listeners.running(context); } catch (Throwable ex) { handleRunFailure(context, ex, null); throw new IllegalStateException(ex); } return context; }
2.編寫相關呼叫
此處applicationContext載入完成後進行了輸出DeltaConfigApplication start finished !!!!!!!
原創:做時間的朋友@Component public class DeltaConfigApplicationRunner implements ApplicationRunner { private static final Logger logger = LoggerFactory.getLogger(DeltaConfigApplicationRunner.class); public void run(ApplicationArguments args) throws Exception { logger.info("DeltaConfigApplication start finished !!!!!!!"); } }