1. ホーム
  2. spring-boot

[解決済み] 文字列のリストに対するSpring Bootのyaml設定

2022-04-22 06:08:13

質問

の文字列の配列を読み込もうとしています。 application.yml ファイルを作成します。これがコンフィグです。

ignore:
    filenames:
        - .DS_Store
        - .hg

これがクラスです。

@Value("${ignore.filenames}")
private List<String> igonoredFileNames = new ArrayList<>();

同じクラスで他のコンフィギュレーションもあり、問題なく読み込めます。YAMLファイルにはタブはありません。それでも、次のような例外が発生します。

Caused by: java.lang.IllegalArgumentException: Could not resolve placeholder 'ignore.filenames' in string value "${ignore.filenames}"

解決方法は?

私の 推測 というのは @Value は複雑な型に対応できません。 このようなプロップクラスを使用することができます。

@Component
@ConfigurationProperties('ignore')
class IgnoreSettings {
    List<String> filenames
}

ご注意ください。 このコードは グルーヴィー - Javaではない - を使えば、例を短くすることができます! 採用のヒントはコメントをご覧ください。

完全な例を見る https://github.com/christoph-frick/so-springboot-yaml-string-list