2017-02-05 2 views
1

속성 파일에서 모든 응용 프로그램 속성을 읽어야하는 응용 프로그램이 있습니다. 그런 다음 외부 캐시 프레임 워크에서이를 대체하십시오. 그런 다음 봄 콩을 초기화하십시오.지연 스프링 XML 가져 오기

스프링의 Java Config를 사용하여 속성을 읽고 무시합니다. @import를 사용하여 xml 파일을로드합니다. 그러나 컨텍스트가로드되기 시작하면 XML 파일을 가져 오므로 모든 XML Bean이 초기화됩니다.

그래서 먼저 모든 속성을로드 할 때까지 XML 파일 가져 오기를 지연시킬 수있는 방법이 있습니까?

답변

0

다음 코드를 사용할 수 있습니다.

<beans default-lazy-init="true"> 
<!-- no beans will be pre-instantiated... --> 
</beans> 

또는로드하지 않으려는 bean에 lazy-init을 개별적으로 추가하십시오. 당신은 그 후 속성 파일을 읽을 수

또는

당신이 depends-on 또는 주석 기반 구성을 찾고 있다면 @DependsOn 사용할 수 있습니다 중 하나 귀하의 요구 사항을 달성 할 수있는 방법이 많이 있습니다, 캐시 빈을 생성하고 depends-on을 사용하여 컨테이너가 Bean을 다른 Bean에 의존한다는 사실을 알게되면 캐시 빈을 초기화하고 적합하다고 생각하는 것을 사용할 수있다.

투명도를 높이려면 example을 참조하십시오. 콩을 따라하는 것은이 빈에 따라 빈 전에 생성됩니다, 그래서 당신은이 빈의 인스턴스가되며, 그것을 사용할 수

<bean id="primaryBean" depends-on="cacheBean"></bean> 

이제 IOC의 보장.

이 외에

당신은 당신이 spring docs을 참조 할 수의 참조를 들어 LifeCycle 인터페이스

public interface Lifecycle { 

    void start(); 
    void stop(); 
    boolean isRunning(); 
} 

을 구현할 수 있습니다.

+0

Vipul에 감사 드려요. 그러나 캐치는 내가 가져올 봄 xml 빈을 수정할 수 없습니다. 그래서 lazy init을 추가하거나 그 XML 파일에 종속을 추가 할 수 없습니다. – Devilethon

+0

xml 접근 대신 @DependsOn 주석을 사용하십시오. –