Можно ли сделать что-то вроде следующего в Котлин?Как использовать весенние аннотации, например @Autowired в kotlin?
@Autowired
internal var mongoTemplate: MongoTemplate
@Autowired
internal var solrClient: SolrClient
Можно ли сделать что-то вроде следующего в Котлин?Как использовать весенние аннотации, например @Autowired в 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
}
Constructor:
@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
}
Конструктор версии проверка всех зависимостей в время создания бина и все введенные поля - val, с другой стороны, вложенные поля lateinit могут быть только var, и имеют небольшой промежуток времени выполнения. И для тестирования класса с помощью contructor вам не нужно размышлять.
Ссылки:
Да, аннотации java поддерживаются в Котлине в основном как в Java. Один Гоча является аннотаций на первичном конструкторе требует явного «конструктор» ключевое слово:
От https://kotlinlang.org/docs/reference/annotations.html
Если вам нужно аннотировать первичный конструктор класса, необходимо добавить конструктор ключевое слово в конструктор декларации, а также добавлять аннотации перед ним:
class Foo @Inject constructor(dependency: MyDependency) {
// ...
}
вы пробовали? И чтобы быть немного более конструктивным, есть целый [Spring Boot template] (https://kotlinlang.org/docs/tutorials/spring-boot-restful.html), ответ, безусловно, «да». – mabi
@mabi благодарю вас за учебную ссылку :) – eendroroy