Внедрение свойств Spring Boot в Kotlin Singleton / объект - PullRequest
0 голосов
/ 12 октября 2018

У меня есть проект Spring Boot 2, и я использую Kotlin.Чего я хочу добиться, так это иметь синглтон Kotlin (то есть объект ) и внедрять свойства Spring.

Обычно я бы делал это с помощью инжекции в конструктор, что является предпочтительным способом.,Однако для объектов конструкторы не допускаются.Другой вариант - использовать lateinit var в сочетании с @Value("\${my.property.name}"), хотя тогда мне придется инициализировать поле или явно указать тип.

Я не смог найти пример или подобную ситуацию для этого, поэтому мне любопытно, какой подход требуется для этого варианта использования.

1 Ответ

0 голосов
/ 13 октября 2018

Технически вы можете сделать это:

object MyObject {

    lateinit var foo: String
}

@Configuration
class BeanConfiguration {

    @Bean
    fun myObject(): MyObject {
        return MyObject.also {
            it.foo = "foo"
        }
    }
}

, но я бы не рекомендовал такой подход, поскольку он кажется запахом кода.Лучше иметь простые class es, поскольку Spring гарантирует, что методы, помеченные @Bean, будут вызываться только один раз (если у них нет области действия прототипа).

Так как object s don 'Не нужно создавать, вы можете управлять собственным жизненным циклом, если хотите, вам не нужно помещать все свои вещи в Spring.

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