구성을 제공하기 위해 Spring 클라우드 구성을 사용하도록 설정 한 응용 프로그램을 가지고 있으며 구성 서버가 변경 이벤트를 내 응용 프로그램에 게시 할 수 있도록 모니터를 사용하도록 설정해야합니다. 구성이 올바르게 업데이트되지만 구성 변경시 알림을 받고 새로운 구성을 기반으로 일부 사용자 지정 논리를 실행할 수 있습니다.스프링 클라우드 설정을 새로 고친 후 어떻게 커스텀 로직을 실행할 수 있습니까?
는 내가 구성에 someValue와를 변경할 때 내 설정 서버에서
@Configuration
@RefreshScope
@ConfigurationProperties(prefix = "my.prefix")
public class MyConfig {
private Map<String, MyObject> configs;
private String someValue;
public Map<String, MyObject> getConfigs(){...}
public void setConfigs(){...}
public String getSomeValue(){...}
public void setSomeValue(){...}
}
...
public class MyObject {
private String field1;
public String getField1() {...}
public void setField1() {...}
}
그리고 이것은 지금
my:
prefix:
configs:
TEST:
field1: "testValue"
someValue: "test"
을 application.yml이 구성 객체를 가지고 있고, 설정 서버는 새로 고침을 발행하고, 그것을 setSomeValue()를 호출하고 값을 새 값으로 업데이트합니다. setSomeValue()에 내 사용자 지정 논리를 추가 할 수 있으며 정상적으로 작동합니다. 그러나 구성에서 항목을 업데이트하거나 추가/제거 할 때 setConfigs() 또는 setField1()을 호출하지 않는 것 같습니다.
EnviornmentChangeEvents, RefreshEvents 또는 RefreshScopeRefreshedEvents에 대한 리스너 등록을 시도했지만 값이 업데이트되거나 전혀 트리거되지 않기 전에 트리거됩니다. 또한 @PreDestroy 및 @PostConstruct 메서드에 논리를 추가하려고 시도했지만 PreDestroy 만 호출되고 구성이 업데이트되기 전에 호출됩니다. 나는 또한 InitializingBean을 구현하고 내 논리를 afterPropertiesSet()에 두었지 만 결코 호출되지 않는다.
이 구성이 업데이트되면 어떻게 알림을받을 수 있습니까?