springBoot的自定义监听器为什么要配置有参构造,而自定义初始化不需要呢?
/**
* 自定义的初始化器 ,SpingBoot启动后就会被初始化
*/
public class InitializerTestBoot implements ApplicationContextInitializer {
@Override
public void initialize(ConfigurableApplicationContext applicationContext) {
System.out.printf("zhh 自定义的初始化器");
}
}
public class ListenerTest implements SpringApplicationRunListener, Ordered {
private final SpringApplication application;
private final String[] args;
public ListenerTest(SpringApplication application, String[] args) {
this.application =application;
this.args =args;
}
@Override
public int getOrder() {
return -1;
}
@Override
public void starting(ConfigurableBootstrapContext bootstrapContext) {
System.out.println("zhh Listener监听启动");
}
@Override
public void environmentPrepared(ConfigurableBootstrapContext bootstrapContext, ConfigurableEnvironment environment) {
System.out.println("环境准备,正在读取配置文件....");
}
}
ListenerTest 如果i没有有参构造就会报错
Exception in thread "main" java.lang.IllegalArgumentException: Cannot instantiate interface org.springframework.boot.SpringApplicationRunListener : com.zhang.ListenerTest
at org.springframework.boot.SpringApplication.createSpringFactoriesInstances(SpringApplication.java:449)
at org.springframework.boot.SpringApplication.getSpringFactoriesInstances(SpringApplication.java:431)
at org.springframework.boot.SpringApplication.getRunListeners(SpringApplication.java:419)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:297)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1303)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1292)
at com.zhang.RedisSpringbootApplication.main(RedisSpringbootApplication.java:10)
Caused by: java.lang.NoSuchMethodException: com.zhang.ListenerTest.<init>(org.springframework.boot.SpringApplication, [Ljava.lang.String;)
at java.lang.Class.getConstructor0(Class.java:3082)
at java.lang.Class.getDeclaredConstructor(Class.java:2178)
at org.springframework.boot.SpringApplication.createSpringFactoriesInstances(SpringApplication.java:444)
... 6 more
可是它两走的都是getSpringFactoriesInstances同一个方法呀