2016-11-16 13 views
0

私はSpringブートアプリケーションを開発しました。このアプリケーションは、テスト環境またはプロダクト環境にデプロイすることができ、アプリケーションはリクエストを作成するためにREST APIを使用しています。私はPOJOをラッパーとして使用し、プッシュされるAPIのフィールドIDを含むJsonPropertyアノテーションを使用します。Dynamic JsonProperty(SpringブートでJacksonを使用)

@JsonProperty("field_001) 
private String name; 

@JsonProperty("field_002) 
private String address; 

すなわち、これらの値のフィールドラベルは、テストエンドポイントで異なります。だから、テストのエンドポイントは性質が

@JsonProperty("field_005) 
private String name; 

@JsonProperty("field_006) 
private String address; 

としてマッピングするために期待するかもしれない私は、プロファイルベースのプロパティファイルのための春ブーツネイティブサポートを利用できるようにしたいと思います。実行時に外部プロパティファイルからJsonProperty注釈値を読み込む。

したがって、たとえば、

3つのファイルapplication.properties、application-test.propertiesとapplication-prod.propertiesがあるかもしれません。 Springブートは、 "spring.profiles.active"設定に基づいて、バニラプロパティファイルに加えて、テストまたはプロードプロパティを読み取ることができます。

...- test.propertiesには、テストサーバーフィールドの定数値が含まれます。そして...- prod.propertiesには、prodサーバーのフィールドの定数値が入ります。このような春の@valueタグとして

ネスト注釈:

@JsonPropertyが値として文字列を使用しますが、@Value

@JsonProperty(@Value("${property.file.reference.here})) 
doesn't seem to work. 

敬具

+0

引用符は何も閉じられていないのですか? – slim

答えて

0

@JsonProperty(@Value("${property.file.reference.here}))は、というだけの理由が動作しません'Annotation'なので、これは文字列値ではないため、次のエラーが表示されます:

Error:(34, 12) java: annotation not valid for an element of type java.lang.String

プラス、@Valueは、スプリングコンテキストがロードされたときに「1回」ロードされます。

編集

あなたは良好な特性がテストリソースパッケージの下にファイルを作成し、テスト/開発とPRODプロパティを使用したい場合は、自動的にロードされます。 (私はその方法を使用しています)。

実際に別のアプローチがありますが、実行時に注釈値を変更する方法があります。

+0

ありがとうMohamed ELAYADI。私はテストリソースパッケージの下でファイルをどのように処理できるのか分かりません。私は2つのファイル:dev環境のapplication.propertiesとprod環境のもう一つ。 –

+0

問題を解決しましたか? –

+0

いいえまだ検索しています。あなたはなにか考えはありますか –

関連する問題