設定を提供するためにSpringクラウド設定を使用するようにアプリケーションを設定し、設定サーバーが変更イベントを自分のアプリケーションに公開するようにモニターを有効にしました。設定は正しく更新されますが、新しい設定に基づいてカスタムロジックを実行できるように設定が変更されたときに通知する必要があります。Springクラウド設定の更新後にカスタムロジックを実行するにはどうしたらいいですか?
は私が構成でsomeValueのを変更したときに、私のconfigサーバで
@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()に追加することができ、うまく動作します。しかし、configConfigs()やsetField1()を呼び出すようには見えません。
EnviornmentChangeEvents、RefreshEvents、またはRefreshScopeRefreshedEventsのリスナーを登録しようとしましたが、Springが値を更新する前にトリガーされるか、まったくトリガーされません。 @PreDestroyと@PostConstructメソッドにロジックを追加しようとしましたが、PreDestroyだけが呼び出されて終了し、設定が更新される前に呼び出されます。私はInitializingBeanを実装して、私のロジックをafterPropertiesSet()に入れてみましたが、どちらも呼び出されません。
この設定が更新されたときにどのように通知を受けることができますか?