4
Lifecycle
인터페이스 로직을 이해하려고합니다. Lifecycle
에 대한 문서는 말한다 :Spring Call Lifecycle의 시작/중지 후크는 어떤 조건입니까?
예를 들어, 각 컨테이너 내에서 적용 모든 구성 요소에 신호를 시작/전파 중지컨테이너 중지/재시작 시나리오의 경우 런타임.
하지만 cantainer는이 방법 (시작/중지)을 전혀 호출하지 않는 것으로 보입니다.
예를 들어 다음 코드에 대한 결과는 하나의 출력은 ">> 전화 : 실행 : 거짓"
@Configuration
public class TestApp implements Lifecycle {
boolean runStatus = false;
@Override
public void start() {
System.err.println(">> call: start (Lifecycle)");
runStatus = true;
}
@Override
public void stop() {
System.err.println(">> call: stop (Lifecycle)");
runStatus = false;
}
@Override
public boolean isRunning() {
System.err.println(">> call: is running: " + runStatus);
return runStatus;
}
public static void main(String[] args) {
AbstractApplicationContext ctx = new AnnotationConfigApplicationContext(TestApp.class);
ctx.stop();
}
}
P.S. SmartLifecycle
에 대해 들었는데 정상적으로 작동합니다. 그러나 우리가 Lifecycle
에서 시작/중지 방법을 올바르게 사용할 수있는 방법은 흥미 롭습니다.
스프링 설명서는 말한다 : "를 SmartLifecycle 확장주의, 수명주기의 인터페이스는 다른 구성 요소에서 라이프 사이클 인터페이스는 또한 발견되지 않은 따라서 무시 남아 최상위 싱글 콩에 지원됩니다.. 인터페이스는 애플리케이션 컨텍스트의 시작 및 종료 단계와의 통합을 제공합니다. " 구성 클래스에서 사용하기 때문에 작동하지 않을 수 있습니까? Bean 클래스에서 시도해 보길 권한다. – niekname