你好,
我正在使用 Spring Boot 2.0.2 和 Kotlin 1.2.41。我正在尝试使用枚举作为 ConfigurationProperty。我编写了一个最小的示例应用程序来重现该问题: https://github.com/sbueringer/springboot-kotlin-enum/
我有以下配置属性:
@Configuration
@ConfigurationProperties(prefix = "custom")
@Validated
class Properties {
var test = TestEnum.VALUE1
}
enum class TestEnum {VALUE1, VALUE2}
与以下 application.yaml 结合使用:
custom:
test: VALUE2
我在启动时遇到以下异常:
2018-05-25 06:45:21.848 WARN 22061 --- [ restartedMain] onfigReactiveWebServerApplicationContext : Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'application': Unsatisfied dependency expressed through constructor parameter 0; nested exception is org.springframework.boot.context.properties.ConfigurationPropertiesBindException: Error creating bean with name 'properties': Could not bind properties to 'Properties' : prefix=custom, ignoreInvalidFields=false, ignoreUnknownFields=true; nested exception is org.springframework.boot.context.properties.bind.BindException: Failed to bind properties under 'custom.test' to com.example.TestEnum
要重现,只需克隆存储库并启动 SpringBootApplication。
编辑:如果我删除注释,它似乎可以工作@Validated
。这是故意的吗?