在SpringBoot中,SpringApplication.run()方法执行了两遍。具体原因是暂时不明,我们来看一下是为什么会造成这种情况。
执行两遍的起点是这行代码:
ConfigurableEnvironment environment = prepareEnvironment(listeners,
applicationArguments);
1、这个方法中包含两个属性,分别是SpringApplicationRunListeners和一个我们启动的时候传入的参数,默认是没有参数传入的。
这个SpringApplicationRunListeners借鉴了Spring的ApplicationListener的方式。
传入的Listeners中只有一个Listener,就是EventPublishingRunListener,这个类的作用就是Publish SpringApplication相关的Listener
2、我们进入看看执行方法是什么样子的:
private ConfigurableEnvironment prepareEnvironment(
SpringApplicationRunListeners listeners,
ApplicationArguments applicationArguments) {
// Create and configure the environment
ConfigurableEnvironment environment = getOrCreateEnvironment();
configureEnvironm