从Kotlin属性创建Springbean
我将Kotlin用于Spring应用程序(而不是Spring引导),我想从属性创建一个Bean 它一开始是一个带有单独支持字段的函数从Kotlin属性创建Springbean,spring,kotlin,Spring,Kotlin,我将Kotlin用于Spring应用程序(而不是Spring引导),我想从属性创建一个Bean 它一开始是一个带有单独支持字段的函数 private val _guessCount = 10 @Bean open fun guessCount() = _guessCount 但后来我开始寻找一种更简洁的方式: @Bean open val guessCount: Int = 10 。。。这会引发异常 Kotlin: This annotation is not applicable to
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'
Caused by: org.springframework.beans.factory.NoUniqueBeanDefinitionException: No qualifying bean of type 'int' available: expected single matching bean but found 1: getGuessCount
因此,我尝试使用get
访问器:
@get:Bean
open val guessCount: Int = 10
。。。这会引发另一个异常
Kotlin: This annotation is not applicable to target 'member property with backing field'
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
或
这些很有用,但看起来有点难看。尤其是字符串guessCount
有人知道更好的方法吗?您是否考虑过将
注释BeanNameGenerator子类化,并在注释配置应用程序上下文上设置它的实例?