1. 分别创建3个配置加载类ConfigA、ConfigB、ConfigB
package com.zsx.config;
import org.springframework.boot.autoconfigure.AutoConfigureAfter;
import org.springframework.boot.context.event.ApplicationStartedEvent;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.event.EventListener;
@Configuration
@AutoConfigureAfter(ConfigC.class)
public class ConfigA {
public ConfigA() {
System.out.println("ConfigA()");
}
@EventListener(ApplicationStartedEvent.class)
public void onApplicationStarted() {
System.out.println("ConfigA.onApplicationStarted()");
}
}
package com.zsx.config;
import org.springframework.boot.autoconfigure.AutoConfigureBefore;
import org.springframework.boot.context.event.ApplicationStartedEvent;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.event.EventListener;
import java.util.concurrent.TimeUnit;
@Configuration
@AutoConfigureBefore(ConfigC.class)
public class ConfigB {
public ConfigB() throws InterruptedException {
TimeUnit.SECONDS.sleep(3);
System.out.println("ConfigB()");
}
@EventListener(ApplicationStartedEvent.class)
public void onApplicationStarted() throws InterruptedException {
TimeUnit.SECONDS.sleep(3);
System.out.println("ConfigB.onApplicationStarted()");
}
}
package com.zsx.config;
import org.springframework.boot.context.event.ApplicationStartedEvent;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.event.EventListener;
import java.util.concurrent.TimeUnit;
@Configuration
public class ConfigC {
public ConfigC() throws InterruptedException {
TimeUnit.SECONDS.sleep(2);
System.out.println("ConfigC()");
}
@EventListener(ApplicationStartedEvent.class)
public void onApplicationStarted() throws InterruptedException {
TimeUnit.SECONDS.sleep(2);
System.out.println("ConfigC.onApplicationStarted()");
}
}
2. 在资源文件夹下创建文件resources/META-INF/spring.factories,文件内容为
org.springframework.boot.autocon