2016-06-01 10 views
0

設定にアクセスするたびにリロードチェックが実行されたため、ConfigurationオブジェクトをSpring @Beanとして公開するときにCommons Configuration v1のリロード機能を使用しました。Commons Configurationを再ロードする2 Spring bean

私は今Commons Configuration v2に移行しようとしています。このリロードはビルダーによって作成された新しいConfigurationオブジェクトに対してのみ有効です。言い換えれば

、V1に私は

@Bean 
public Configuration config() { 
    ... 
    return builder.getConfiguration(); 
} 

ような何かを行うことができながら、

@Autowired Configuration config; 

とコンフィギュレーションを注入し、(必要な場合)、それは

config.getString("somepath"); 
にリロードすることを期待

今すぐお電話ください

builder.getConfiguration() 

新しい設定が必要なたびに、

どうすればいいですか? 多くの@Controllersで既に注入されている@BeanをSpringでリフレッシュできますか? これは自動である必要はありません。管理コンソールに「リロード」ボタンを実装してトリガーすることができます。

+0

Spring Cloud Configをご覧ください。彼らはそこに再読み込みを実装し、うまく動作します。彼らがSpringとどのように統合されたかを掘り下げれば、それを再利用できるかもしれません。約6か月前に私はPOCを行って、設定サーバーからJSONを取得しました。 – kab

+0

提案していただきありがとうございますが、当分の間、Spring Configは私が何をする必要があるのか​​不足しているようです。 – xtian

答えて

0

設定を再構築してコンソールから呼び出す方法で@Beanとして公開されているMyConfigurationクラスにConfigurationをラップするだけで済むかもしれません。次のようなもの:

public class MyConfiguration { 
    private Configuration configuration; 

    ... inject builder somehow here 

    public void reload() { 
     builder.getReloadingController().checkForReloading(null); 
     configuration = builder.getConfiguration(); 
    } 

    public String getString(String key) { 
     return configuration.getString(key); 
    } 

    ... all other delegated methods follow 

} 
関連する問題