Kotlin класс данных application.yml, ищущий beans - PullRequest
0 голосов
/ 09 июля 2020

У меня есть класс данных Kotlin, свойства которого я хочу прочитать из файла application.yml. Вот мой класс данных:

@ConstructorBinding
@ConfigurationProperties("meanwhile.in.hell.myapp")
data class MyAppProperties(val serverId: String, val locationId: String)

Затем я добавил его в свой класс конфигурации:

@Configuration
@EnableConfigurationProperties(MyAppProperties::class)
open class MyAppConfiguration(private val properties: MyAppProperties) {

, где я получаю доступ к значениям, используя только properties.serverId, и передаю объект в конструктор других создаваемых bean-компонентов, таких как этот:

open class MyAppClient(
    private val webClient: WebClient,
    private val properties: MyAppProperties
) : IMyAppClient {

Однако, когда я запускаю свое приложение, я получаю сообщение об ошибке, которое вместо попытки загрузить свойства из application.yml, оно пытается найти beans для параметров конструктора:

Unsatisfied dependency expressed through constructor parameter 0; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'meanwhile.in.hell.myapp-meanwhile.in.hell.myapp.MyAppProperties': Unsatisfied dependency expressed through constructor parameter 0; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'java.lang.String' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {}

Parameter 0 of constructor in meanwhile.in.hell.myapp.MyAppProperties required a bean of type 'java.lang.String' that could not be found.

Как мне остановить мое приложение, думая, что эти параметры подключены автоматически? Я знаю, что в Kotlin именно так выглядит конструктор Autowired bean (ie, не требующий аннотации), но все примеры, которые я видел в Интернете о том, как читать свойства application.yml, выглядят так же, как мой класс данных .

Spring-Boot v2.3.0.RELEASE Kotlin v1.3.72

1 Ответ

0 голосов
/ 09 июля 2020

Оказывается, мне не хватало зависимости

org.jetbrains.kotlin:kotlin-reflect

Документы: https://docs.spring.io/spring-boot/docs/2.2.1.RELEASE/reference/htmlsingle/#boot -features- kotlin -requirements

Выпуск: https://github.com/spring-projects/spring-boot/issues/19582

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