Kotlinでフォローするようなことは可能ですか?
@Autowired
internal var mongoTemplate: MongoTemplate
@Autowired
internal var solrClient: SolrClient
確かにこれが可能であるため、オプションはほとんどありません。注釈付きコンストラクターをお勧めしますが、lateinitも機能し、場合によっては役に立つかもしれません。
Lateinit:
@Component
class YourBean {
@Autowired
lateinit var mongoTemplate: MongoTemplate
@Autowired
lateinit var solrClient: SolrClient
}
コンストラクタ:
@Component
class YourBean @Autowired constructor(
private val mongoTemplate: MongoTemplate,
private val solrClient: SolrClient
) {
// code
}
Spring 4.3のコンストラクター:
@Component
class YourBean(
private val mongoTemplate: MongoTemplate,
private val solrClient: SolrClient
) {
// code
}
コンストラクターのバージョンは、Bean作成時のすべての依存関係とすべての挿入フィールドをチェックします。val、valid、lateinit挿入フィールドはvarのみで、実行時のフットプリントはほとんどありません。そして、コンストラクターでクラスをテストするために、リフレクションは必要ありません。
リンク:
はい、Java注釈は、ほとんどJavaの場合と同様にKotlinでサポートされています。 1つの落とし穴は、明示的な 'constructor'キーワードが必要なプライマリコンストラクターの注釈です。
から https://kotlinlang.org/docs/reference/annotations.html
クラスのプライマリコンストラクターに注釈を付ける必要がある場合、コンストラクター宣言にコンストラクターキーワードを追加し、その前に注釈を追加する必要があります。
class Foo @Inject constructor(dependency: MyDependency) {
// ...
}
コンストラクターを介して依存関係を自動配線することもできます。依存関係に@Configuration, @Component, @Service
などの注釈を付けることを忘れないでください
import org.springframework.stereotype.Component
@Component
class Foo (private val dependency: MyDependency) {
//...
}