私はスプリングブートアプリケーションは以下のとおりですapplication.yml
- 基本的には以下から抜粋ここ:
info:
build:
artifact: ${project.artifactId}
name: ${project.name}
description: ${project.description}
version: ${project.version}
特定の値を挿入することができます。例えば
@Value("${info.build.artifact}") String value
ただし、マップ全体、つまり次のようなものを挿入したいと思います。
@Value("${info}") Map<String, Object> info
それは(または似たようなことは)可能ですか? もちろん、yaml を直接ロードすることはできますが、Spring ですでにサポートされているものがあるかどうか疑問に思っていました。
ベストアンサー1
以下のソリューションは、@Andy Wilkinson のソリューションの省略形ですが、別のクラスや注釈付きメソッドを使用する必要がない点が異なります@Bean
。
アプリケーション.yml:
input:
name: raja
age: 12
somedata:
abcd: 1
bcbd: 2
cdbd: 3
SomeComponent.java:
@Component
@EnableConfigurationProperties
@ConfigurationProperties(prefix = "input")
class SomeComponent {
@Value("${input.name}")
private String name;
@Value("${input.age}")
private Integer age;
private HashMap<String, Integer> somedata;
public HashMap<String, Integer> getSomedata() {
return somedata;
}
public void setSomedata(HashMap<String, Integer> somedata) {
this.somedata = somedata;
}
}
@Value
アノテーションと の両方を@ConfigurationProperties
問題なく結合できます。ただし、ゲッターとセッターは重要であり、 が機能する@EnableConfigurationProperties
ためには必須です@ConfigurationProperties
。
私は、@Szymon Stepniak が提供した素晴らしいソリューションからこのアイデアを試してみました。誰かの役に立つだろうと思いました。