繁体   English   中英

Spring boot "@ConditionalOnProperty(value =)" 注入文字字符串

[英]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 ,以至于它注入了文字字符串,如日志中所示,而不是环境变量? (顺便说一下,这应该是布尔值truefalse

问题可能源于您提供价值的方式。 由于您正在为不同的 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM