2016-07-07 9 views
0

私は.ymlファイルで定義された多くのプロパティを持つスプリングブートアプリケーションを持っています。ファイル内のプロパティを持つことからクラウド内にあることに変わりつつあります。このために、私は春のクラウド領事でキー/値の機能を使用しています。spring cloud consulから値/プロパティをロードする正しい方法

私は領事から指定されたキーの値を取得することですが、私はそれを行うことができました文書化され、唯一の方法を見てきた唯一の方法はとても似ている:

@Autowired 
private Environment env; 

    @RequestMapping("/test") 
    String home() { 
     return env.getProperty("test.property"); 
    } 

これは結構ですそして、ダンディが、私はまだのプロパティに古いやり方ロードするように設定されているいくつかの既存のクラスがあります:私のプロジェクトに春のクラウド領事の依存関係を追加した後

@Value("${test.property}") 
String testProperty; 

を、私はすべてのこれらのプロパティはできないという新たなエラーを取得します解決されました。私はそれが春のブートは、領事の依存関係を見て、ymlファイルまたはその部分を無視しているためだと仮定します。

クラス内のコードを変更することなく、これらのプロパティをconsulからロードする方法はありますか?または、envオブジェクトを使用する例に従うためにこれらのクラスを変更する必要がありますか?

また、この特定の目的のためにスプリングクラウド領事がスプリングブーツでどのように動作するかについてのさらなる洞察は非常に認められます。そこにはたくさんのドキュメントがありません。

+0

Spring Cloud Config Clientで使用している場合、 '@ Value'は単純に機能します。 –

+0

@ M.Deinum私は、私は春の雲の領事を使用していない – Seephor

+0

それはサーバー側である、春の雲の領事は非常に簡単に春の雲の設定と統合することができますし、あなたが望むものをアウト - オブ - http://cloud.spring.io/spring-cloud-consul/spring-cloud-consul.html(最後のセクション)を参照してください。 –

答えて

2

私はこれを動作させることができましたが、ちょっとトリッキーでした。あなたは、春の雲領事スターターの依存関係を追加する必要があります。私はちょうど春の雲領事コンフィグ依存関係を持っていた。

私は私のブートストラップのプロパティがちょうどフォーマットとデータ・キーを設定し、私のapplication.ymlとbootstrap.ymlの両方に領事の設定のプロパティを追加する必要がありました:

spring: 
    cloud: 
    consul: 
     config: 
     format: YAML 
     data-key: data 

これは、ロードするために、スプリングブーツを伝えます私のアプリケーションのconfigクラウドディレクトリ内のキーデータの値であるyaml blob。

私のapplication.ymlの設定は、この例で提供するデフォルトです。これらの設定と@autoconfigurationタグをサービスメインアプリケーションクラスに追加すると、すべてが機能し始めました。

関連する問題