2017-08-30 9 views
3

ConfigurationPropertiesを正しく初期化する方法スプリングブートコットンKotlin&Spring Boot @ConfigurationProperties

現在私は以下の例のように実行します。

@ConfigurationProperties("app") 
class Config { 
    var foo: String? = null 
} 

しかし、それはかなり醜いと実際foo fooが定数val UEとは、起動時に初期化されるべきである、iable varではありません将来変更されることはありませんdocsで述べたように

+1

これは、それがある方法で結構です。 SpringはJavaBeanバインディングを使用しているため、getter/setterが必要です。 'ConfigurationProperties'は型保証された設定です。' data'クラスではありません。 –

+1

https://github.com/spring-projects/spring-boot/issues/8762を参照してください。これは、 '@ ConfigurationProperties'の不変なデータクラスを適切にサポートすることについて議論しています。 –

答えて

0
@Value("\${some.property.key:}") 
lateinit var foo:String 

は、このよう

+0

ありがとう、あなたのコメントです。私は '@ Value'アノテーションについて知っていますが、このように考えることはありません。定型コードをたくさん生成するので、@ConfigurationPropertiesは間違いなく優れています。 – Sonique

6

使用することができます: "Java Beanがは「ConfigurationPropertiesを使用するために提供する必要があるこれは、あなたの特性はゲッターとセッターを持っている必要がありますを意味します。これval

ゲッター。現時点では不可能であり、ちょうど春のMVCのように、標準のJava Beansのプロパティ記述子を経由してあるので、結合セッターは、通常は必須です。例ところがあります。セッターを省略することができる[...]

しかし、あなたのユースケースのためにKotlinに関連未解決の問題あります:https://github.com/spring-projects/spring-boot/issues/8762

関連する問題