Ich habe eine SpringApplicationRunListener Implementierung wie folgt.So rufen Sie Funktionen in SpringApplicationRunListener
public class AppListener implements SpringApplicationRunListener {
private long appStartTimestamp;
private long appFinishTimestamp;
public AppListener(SpringApplication application, String[] args) {
}
@Override
public void started() {
appStartTimestamp = System.currentTimeMillis();
}
@Override
public void environmentPrepared(ConfigurableEnvironment environment) {
//Not used.
}
@Override
public void contextPrepared(ConfigurableApplicationContext context) {
//Not used.
}
@Override
public void contextLoaded(ConfigurableApplicationContext context) {
//Not used.
}
@Override
public void finished(ConfigurableApplicationContext context, Throwable exception) {
appFinishTimestamp = System.currentTimeMillis();
}
public long getAppStartTimestamp() {
return appStartTimestamp;
}
public long getAppFinishTimestamp() {
return appFinishTimestamp;
}
}
Ohne jegliche statische Methoden oder Variablen, wie kann ich nennen getAppStartTimestamp()
und getAppFinishTimestamp()
Funktionen die beiden Variablen zu bekommen? Der folgende Code funktioniert nicht, weil ich eine neue Instanz von AppListener
initialisiere.
AppListener appListener = new AppListener(new SpringApplicationBuilder(Application.class).build(), null);
appStartTimestamp = appListener.getAppStartTimestamp(); // 0
appFinishTimestamp = appListener.getAppFinishTimestamp(); // 0
Ich finde, dass AppListener
nicht als Bohne gemacht werden, weil sie aufgerufen wird, bevor Spring-Bean-Management beginnt. Gibt es eine Möglichkeit, die laufende AppListener
Instanz zum Aufruf der beiden Get-Funktionen zu bekommen? Vielen Dank.
Brilliante Idee. Es klappt! Vielen Dank! Weil ich 'AppEventData' in einer anderen Klasse verwende, so dass ich es einfach autowire. – NMSL