[英]Error: The name or value attribute of @ConditionalOnProperty must be specified in Spring Boot
[英]Spring boot "@ConditionalOnProperty(value =)" injecting literal String
我有一个 Spring Boot 应用程序,其中一个类被注释为@RestController
并且在我的类MyRestController.kt
(kotlin) 上也有@ConditionalOnProperty
注释,如下所示:
@RestController
@ConditionalOnProperty(value = ["app.running-mode.read-write"],havingValue = "true", matchIfMissing = true)
class MyRestController(private val r : MyRestService){
@GetMapping
// some endpoint here
@PostMapping
// some endpoint here
}
我的application.properties
看起来像这样:
app.running-mode.read-write=${MY_API_RUNNING_MODE_READ_WRITE}
当我有时运行我的应用程序时,它在我的类上因java.lang.IllegalStateException
而崩溃,其中包含这个ConditionalOnProperty
注释MyRestController.kt
,我看到它说:
Could not resolve placeholder 'MY_API_RUNNING_MODE_READ_WRITE` in value "${MY_API_RUNNING_MODE_READ_WRITE}"
这应该是 Azure 设置的环境变量,但是我是否可能错误地定义了我的@ConditionalOnProperty
,以至于它注入了文字字符串,如日志中所示,而不是环境变量? (顺便说一下,这应该是布尔值true
或false
)
问题可能源于您提供价值的方式。 由于您正在为不同的 env 从环境中注入值,因此该值可能不存在,甚至可能在环境中错误地提供。 检查以验证它是否正确提供。 确保使用密钥“MY_API_RUNNING_MODE_READ_WRITE”配置环境。
由于您正在从application.properties
读取值,因此在删除 '[]' 后尝试提供如下所示的值:
@RestController
@ConditionalOnProperty(value = "app.running-mode.read-write",havingValue = "true", matchIfMissing = true)
class MyRestController(private val r : MyRestService){
@GetMapping
// some endpoint here
@PostMapping
// some endpoint here
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.