是否可以在 Kotlin 中执行类似以下操作?
@Autowired
internal var mongoTemplate: MongoTemplate
@Autowired
internal var solrClient: SolrClient
最佳答案
在 Spring 中进行依赖注入(inject)的推荐方法是构造函数注入(inject):
@Component
class YourBean(
private val mongoTemplate: MongoTemplate,
private val solrClient: SolrClient
) {
// code
}
在 Spring 4.3 之前的构造函数应该使用 Autowired
显式注释:
@Component
class YourBean @Autowired constructor(
private val mongoTemplate: MongoTemplate,
private val solrClient: SolrClient
) {
// code
}
在极少数情况下,您可能喜欢使用字段注入(inject),您可以在 lateinit
的帮助下做到这一点:
@Component
class YourBean {
@Autowired
private lateinit var mongoTemplate: MongoTemplate
@Autowired
private lateinit var solrClient: SolrClient
}
构造函数注入(inject)在创建bean时检查所有依赖,所有注入(inject)的字段都是val
,而lateinit注入(inject)的字段只能是var
,运行时开销很小。而用构造函数测试类,你不需要反射。
链接:
关于spring - 如何在kotlin中使用@Autowired之类的spring注解?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35479631/