@RefreshScope与@ConditionalOnProperty不起作用

时间:2017-09-18 03:08:00

标签: spring-boot environment-variables runtime spring-cloud spring-boot-actuator

问题

探索在不重新启动JVM的情况下按需启用/禁用 @RequestMapping 端点的选项。在运行时在端点上实现kill开关。

尝试

我已尝试过以下操作,但 @RefreshScope 似乎不适用于 @ConditionOnProperty

@RestController
@RefreshScope
@ConditionalOnProperty(name = "stackoverflow.endpoints", havingValue = "enabled")
public class MyController {

    @Value("${stackoverflow.endpoints}")
    String value;

    @RequestMapping(path = "/sample", method = RequestMethod.GET)
    public ResponseEntity<String> process() {
        return ResponseEntity.ok(value);
    }

}

使用

更新了属性
POST /env?stackoverflow.endpoints=anyvalue

使用

重新加载上下文
POST /refresh

此时控制器返回更新的值。

问题

有没有其他方法可以实现所需的功能?

1 个答案:

答案 0 :(得分:0)

Boot中的条件仅适用于Configuration类级别或Bean定义级别。

这可能会对您有所帮助。

Arrays.asList(yourStringArray)