これは間違いなくサポートされています。ステップバイステップで行きましょう。
まずが、あなたのYAMLファイルがひどくフォーマットされ、それはこのようなものになります。そして、
properties:
sports:
football:
- Team1
- Team2
- Team3
basketball:
- Team4
- Team5
- Team6
settings:
football:
period1: 45
period2: 90
players: 11
basketball:
periods: 4
players: 5
を、あなたの構成プロパティは、次のようになります。
@ConfigurationProperties(prefix = "properties", locations = "classpath:sports.yml")
public class SportsProperties {
private Map<SportsEnum, List<TeamsEnum>> sports;
private Map<SportsEnum, Map<SportSettingsEnum, String>> settings;
public Map<SportsEnum, List<TeamsEnum>> getSports() {
return sports;
}
public void setSports(Map<SportsEnum, List<TeamsEnum>> sports) {
this.sports = sports;
}
public Map<SportsEnum, Map<SportSettingsEnum, String>> getSettings() {
return settings;
}
public void setSettings(
Map<SportsEnum, Map<SportSettingsEnum, String>> settings) {
this.settings = settings;
}
@PostConstruct
public void customManipulation() {
System.out.println(sports);
System.out.println(settings);
}
}
次に、プロパティをする必要がありますあなたの設定で有効にしてください:
@SpringBootApplication
@EnableConfigurationProperties(SportsProperties.class)
public class YamlSampleApplication {
public static void main(String[] args) {
SpringApplication.run(YamlSampleApplication.class, args);
}
}
本当にそうでしょう。ここに私の列挙型です:
public enum SportsEnum {
football, basketball
}
public enum TeamsEnum {
Team1, Team2, Team3, Team4, Team5, Team6
}
public enum SportSettingsEnum {
periods, period1, period2, players
}
ここで私は、ログに取得する出力です:
2016-07-26 17:44:41.226 DEBUG 30015 --- [ main] s.b.e.YamlPropertySourceLoader$Processor : Loading from YAML: class path resource [sports.yml]
2016-07-26 17:44:41.282 DEBUG 30015 --- [ main] s.b.e.YamlPropertySourceLoader$Processor : Matched document with default matcher: {properties={sports={football=[Team1, Team2, Team3], basketball=[Team4, Team5, Team6]}, settings={football={period1=45, period2=90, players=11}, basketball={periods=4, players=5}}}}
2016-07-26 17:44:41.282 DEBUG 30015 --- [ main] s.b.e.YamlPropertySourceLoader$Processor : Loaded 1 document from YAML resource: class path resource [sports.yml]
{football=[Team1, Team2, Team3], basketball=[Team4, Team5, Team6]}
{football={period1=45, period2=90, players=11}, basketball={periods=4, players=5}}
春はあなたのための変換を行います、あなたは手動でいじるをする必要はありません。列挙型の列挙は、正しい列挙型の名前/値を指定するだけですぐにサポートされます。 –
hmmそれは私のために働くように思わない:S。設定は 'Map>'または 'Map >'の設定であることに注意してください。 –
Konstantine
ああ、それはまったく違う野獣であり、基本的な変換サポートを超えていますあなたの質問に追加する...)。あなたの '.yml'のサンプルとあなたがjavaで期待するもの。 –