Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从Kotlin属性创建Springbean_Spring_Kotlin - Fatal编程技术网

从Kotlin属性创建Springbean

从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

我将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 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子类化,并在
注释配置应用程序上下文上设置它的实例?