Автопровод в Котлин - PullRequest
       1

Автопровод в Котлин

0 голосов
/ 30 апреля 2019

Я спрашивал об этом раньше, но никогда не получал никакого ответа, который имел бы смысл.

если ServiceClass помечен @Service в Java-пружине, я могу сделать

@Autowired
private ServiceClass serviceClass;

или еще лучше

private final ServiceClass serviceClass;

public userManagementClass(ServiceClass serviceClass) {
        this.serviceClass = serviceClass;
    }

Затем я перешел на kotlin и ..

@Autowired
private lateinit var addressRepository: AddressRepository

, где AddressRepository помечен @Repository окей, но теперь первый, ServiceClass с @Service

@Autowired
private lateinit var serviceClass: ServiceClass

и

@Autowired constructor(
      private val serviceClass: ServiceClass
)

оба дают ошибку No beans of type found Нужен ли мне сейчас конструктор для моих служб в kotlin или как?

Я прочитал много статей под названием «понимание kotlin lateinit», а что нет, но я думаю, что мне все еще не хватает некоторых основных идей, поскольку ни одна из них не имеет никакого чертова смысла ... Документация Kotlin не годится, но только для понятий, которые вы уже знаю .. иначе это тоже очень запутанно.

РЕДАКТИРОВАТЬ кажется, что предоставление ServiceClass конструктора ничего не делало либо

1 Ответ

3 голосов
/ 30 апреля 2019

В kotlin (и в Java, я думаю) вы можете вставить свои зависимости в конструктор следующим образом:

import org.springframework.stereotype.Repository
import org.springframework.stereotype.Service

@Service
class ServiceClass constructor(
    private val repository: AddressRepository
) {
    // Do stuff here
}

@Repository
class AddressRepository

это то же самое, что:

@Service
class ServiceClass {
    @Autowired
    private lateinit var repository: AddressRepository

    // Do stuff here
}

@Repository
class AddressRepository

, но это позволяетчтобы вы выполняли модульные тесты без использования Spring Context (@SpringBootTest).

Затем вы можете внедрить свой сервис другим способом таким же образом

@Service
class OtherService constructor(
    private val service: ServiceClass
) {
    // Other stuff here
}

Нет проблем с компонентами в этом кодедля меня.(IntelliJ 2019.1.1)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...