Создать Spring Bean из свойства Kotlin

Я использую Kotlin для приложения Spring (не Spring Boot), и я хотел бы создать Bean из свойства.

Это началось как функция с отдельным резервным полем.

private val _guessCount = 10

@Bean
open fun guessCount() = _guessCount

Но потом я стал искать более лаконичный вариант:

@Bean
open val guessCount: Int = 10

... который вызывает исключение

Kotlin: This annotation is not applicable to target 'member property with backing field'

Итак, я попробовал это с помощью аксессуара get:

@get:Bean
open val guessCount: Int = 10

... что вызывает другое исключение

Caused by: org.springframework.beans.factory.NoUniqueBeanDefinitionException: No qualifying bean of type 'int' available: expected single matching bean but found 1: getGuessCount

Это исключение имеет смысл, но теперь я могу решить его только так:

@get:Bean("guessCount")
open val guessCount: Int = 10

или же

open val guessCount: Int = 10
    @Bean("guessCount") get

Они работают, но выглядят некрасиво. Особенно со струной guessCount

Кто-нибудь знает, как это сделать лучше?

Рассматривали ли вы создание подкласса AnnotationBeanNameGenerator и установку его экземпляра на AnnotationConfigApplicationContext? docs.spring.io/spring-framework/docs/current/javadoc-api/org‌ /…

nicholas.hauschild 22.06.2018 22:43
3
1
598
0

Другие вопросы по теме