MySpringApplicationRunListener
META-INF/spring.factories
org.springframework.boot.SpringApplicationRunListener=\
org.zzc.jpa.springboot.ext.MySpringApplicationRunListener
public class MySpringApplicationRunListener implements SpringApplicationRunListener, Ordered {
@Override
public int getOrder() {
return 0;
}
private final SpringApplication application;
private final String[] args;
private final SimpleApplicationEventMulticaster initialMulticaster;
public MySpringApplicationRunListener(SpringApplication application, String[] args) {
this.application = application;
this.args = args;
this.initialMulticaster = new SimpleApplicationEventMulticaster();
for (ApplicationListener<?> listener : application.getListeners()) {
this.initialMulticaster.addApplicationListener(listener);
}
}
public void print(String content) {
System.err.println("------SpringApplicationRunListener-print:" + content + "------");
}
@Override
public void starting() {
// run方法启动时,马上调用,用于非常早期的初始化工作
print("starting");
}
@Override
public void environmentPrepared(ConfigurableEnvironment environment) {
print("environmentPrepared");
}
@Override
public void contextPrepared(ConfigurableApplicationContext context) {
print("environmentPrepared");
}
@Override
public void contextLoaded(ConfigurableApplicationContext context) {
print("contextLoaded");
}
@Override
public void started(ConfigurableApplicationContext context) {
print("started");
applicationInitialize(context);
}
@Override
public void running(ConfigurableApplicationContext context) {
print("running");
}
@Override
public void failed(ConfigurableApplicationContext context, Throwable exception) {
print("failed");
}
private void applicationInitialize(final ConfigurableApplicationContext context) {
StringBuilder sb =new StringBuilder();
String port = context.getEnvironment().getProperty("server.port");
String bar = "**************************************************************************************";
String content = "* Application Starting Service at http://localhost";
String contextPath = context.getEnvironment().getProperty("server.servlet.context-path");
contextPath = StringUtils.trimToEmpty(contextPath);
sb.append("\n");
sb.append(bar).append("\n");
sb.append("*").append("\n");
if("80".equals(port)) {
sb.append(content);
}else {
sb.append(content + ":" + port);
}
sb.append(contextPath).append("\n");
sb.append("*").append("\n");
sb.append(bar).append("\n");
//log.info(sb.toString());
System.err.println(sb.toString());
}
}
启动打印信息
starting执行了两次
------SpringApplicationRunListener-print:starting------
------SpringApplicationRunListener-print:starting------
------SpringApplicationRunListener-print:environmentPrepared------
. ____ _ __ _ _
/\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
\\/ ___)| |_)| | | | | || (_| | ) ) ) )
' |____| .__|_| |_|_| |_\__, | / / / /
=========|_|==============|___/=/_/_/_/
:: Spring Boot :: (v2.1.16.RELEASE)
------SpringApplicationRunListener-print:environmentPrepared------
------SpringApplicationRunListener-print:contextLoaded------
------SpringApplicationRunListener-print:started------
**************************************************************************************
*
* Application Starting Service at http://localhost:38080
*
**************************************************************************************
------SpringApplicationRunListener-print:running------