私は次の春の擬似コード有線scalaクラスを持っています。
@Service
class Something {
@Value("${some.property}")
val someString : String
// do something with someString in the body
}
ただし、someStringはコンストラクター本体の一部であり、コンストラクターが実行されるまでSpringは値をワイヤリングできないため、これは機能しません。
@Valueを接続して、動作し、ひどいものにならないようにするにはどうすればよいですか(必要なすべての値を含むカスタムコンストラクターを使用した現在のソリューションは、「scala」を感じず、ひどいように見えます。
編集:明確にするために、私の現在の解決策はこれです:
@Service
class Something {
@Autowired
def this(@Value("${some.prop}") prop : String) {
this()
// do other construction stuff here
}
}
見た目は醜く、もっと良い方法があると思います。また、プライマリコンストラクターに強制するときに、これらのセカンダリコンストラクターを作成する必要はありません。
編集2:さらに明確にするために、私はこのようなことをする方法があることを望んでいました:
@Service
class Something(@Value("${some.property}") string : String) {
// use the value in your constructor here
}
これははるかにエレガントに見えるからです。私はそれを動作させることができません:)