나는 이와 같이 SpringApplicationRunListener 구현을 가지고있다. 정적 메소드 나 변수를 사용하지 않고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;
}
}
, 어떻게 getAppStartTimestamp()
및 getAppFinishTimestamp()
기능 두 변수를 얻을 수를 호출 할 수 있습니다? AppListener
의 새 인스턴스를 초기화하기 때문에 코드가 작동하지 않습니다.
AppListener appListener = new AppListener(new SpringApplicationBuilder(Application.class).build(), null);
appStartTimestamp = appListener.getAppStartTimestamp(); // 0
appFinishTimestamp = appListener.getAppFinishTimestamp(); // 0
나는 봄이 빈 관리를 시작하기 전에 호출되기 때문에 AppListener
는 콩으로 만들어 질 수 없음을 찾을 수 있습니다. 실행중인 AppListener
인스턴스가 두 get 함수를 호출하도록하는 방법이 있습니까? 감사.
놀라운 아이디어. 그것은 작동합니다! 고맙습니다! 왜냐하면 나는 다른 클래스에서'AppEventData'를 사용하고 있기 때문에, 나는 단지 autowire를 사용한다. – NMSL