2014-11-03 2 views
2

내가 속성의 무리를 가져 스프링 통합 웹 응용 프로그램이 지금처럼 파일 :상쾌한 봄의 부트 등록

<context:property-placeholder location="classpath*:*.properties" /> 

는 지금은 스프링 부팅 응용 프로그램으로 변환, 그리고 난 사용의 속성을 가져입니다 config 클래스의 @PropertySource. 나는 또한 미래의 상태 프로젝트를위한 봄 구름 설정 서버를보고있다. 그래서 내 질문은, 속성 파일을 변경하면 @RefreshScope 필요하지만 내가 알고있는이 시점에서 xml에 해당 속성이 없다면 새로 고쳐야하는 모든 bean이있다. 나는 scope = "새로 고침"응용 프로그램이 "새로 고침"이 유효한 범위가 아니라는 오류를 던질 수 있다고 생각했습니다. 그렇다면 속성 파일이 변경 될 때 정의 된 bean을 새로 고치는 것을 어떻게 관리해야합니까?

나는 이벤트를 캡처하고 그 다음 context.refresh()를 할 수 있다고 생각하고 있습니다. 이미 봄에 건설 된이 일을하는 더 좋은 방법입니까?

답변

1

사용자 정의 Scope을 등록하려면 bean 정의를 선언해야합니다. @EnableAutoConfiguration을 사용하면 Spring Cloud Config가이를 수행합니다. 그렇지 않으면 수동으로 생성해야합니다 (XML이든 아니든 XML). 예 :

@Bean 
public static RefreshScope refreshScope() { 
    return new RefreshScope(); 
} 

(링크 : https://github.com/spring-cloud/spring-cloud-config/blob/1.0.0.M2/spring-cloud-config-client/src/main/java/org/springframework/cloud/autoconfigure/RefreshAutoConfiguration.java#L63)