什么时候执行:
1、容器初始化完成后调用(spring自己的事件监听)
源码分析
springBoot的启动类中调用了run方法
springboot的启动类
public class StarterApplication {
public static void main(String[] args) {
try {
SpringApplication.run(StarterApplication.class, args);
log.info("启动成功");
} catch (Exception ex) {
log.error("运行异常:{}",ex);
}
}
}
run方法在各个阶段都会发布时间,触发监听事件的执行,例如:
org.springframework.boot.SpringApplication#run(java.lang.String...)
public ConfigurableApplicationContext run(String... args) {
StopWatch stopWatch = new StopWatch();
stopWatch.start();
ConfigurableApplicationContext context = null;
Collection<SpringBootExceptionReporter> exceptionReporters = new ArrayList<>();
configureHeadlessProperty();
SpringApplicationRunListeners listeners = getRunListeners(args);
// 发布启动开始监听事件
listeners.starting();
try {
ApplicationArguments applicationArguments = new DefaultApplicationArguments(
args);
ConfigurableEnvironment environment = prepareEnvironment(listeners,
applicationArguments);
configureIgnoreBeanInfo(environment);
Banner printedBanner = printBanner(environment);
context = createApplicationContext();
exceptionReporters = getSpringFactoriesInstances(
SpringBootExceptionReporter.class,
new Class[] { ConfigurableApplicationContext.class }, context);
prepare

2422

被折叠的 条评论
为什么被折叠?



