18

課題に Spring Boot を使用する予定です。データベースに接続する典型的なサーバー アプリケーションです。Spring Configurationを使用して、db 接続の詳細などのプロパティを外部化できることを知っています。しかし、実行時に更新する必要がある他の動的プロパティもあります。フリッパー/機能フラグなど。アプリケーションの特定の機能を動的に制御する必要があります

実行時にそのような動的な動作を取り込むことに関するベストプラクティスは何ですか? 変更をトリガーする次のオプションを考えることができます...

  • 上記のプロパティを変更して JMS メッセージをサーバー インスタンスに送信する
  • サーバー インスタンスで公開された API エンドポイントを呼び出します。たとえば、POST http://myapp/admin/config/update { "config": { "app.cool-feature.enable": true } }

これを実装する独自のカスタム コードを作成できることはわかっていますが (これは 3 回目になります)、動的プロパティ構成に関する標準的な方法/一般的な慣行が既に存在するかどうか疑問に思っています。また、Apache ZooKeeper、coreos etcd、Netflix curator などの他のソリューションと連携でき、Spring と密接に統合できれば素晴らしいと思います。

考え?

4

3 に答える 3

8

Spring Boot を使用している場合は、 を参照してください@ConfigurationProperties。プロパティにアクセスするには、Bean を提供する必要があります。したがって、プロパティの元の値は、Bean の通常のプロパティであるため、実行中に変更できます。

たとえば、あなたの場合:

@Component
@ConfigurationProperties
public class JmsProperties {

    private String url = "vm://localhost"; // (let's suppose you use ActiveMQ)
    
    public String getUrl() {
      // Do work here
    }
    public void setUrl(String value) {
      // Do work here
    }
}

そして、この Bean を JMS メッセージリスナーに注入します。

もちろん、JMS と Spring ブートを使用している場合、自動構成により、すでに Properties クラスがあります...

于 2015-09-09T18:30:27.647 に答える
6

あなたの要件は、すべての構成を一元的に配置できるだけでなく、それらを動的に更新して、次の瞬間から参照アプリで選択できる「Spring Cloud Config」の適切なユースケースです。同じものについては、この標準スプリングリンクを参照してください。

于 2015-09-24T05:51:05.780 に答える