我尝试使用ConditionalOnProperties注释来查找具有多个端点的类中的特定端点。但是,条件似乎没有切换,但始终打开。它在类级别上运行良好,但在端点级别不运行。这是一个错误吗?
@RequestMapping(path = "/test", consumes = {"application/x-www-form-urlencoded"})
@ResponseBody
@Timed()
@ConditionalOnProperty(name = "test.enabled")
public String test(@RequestParam(EXCEPTION_LOG_MESSAGE) String errorLog) {
据我理解注释,它应该用于bean。要么是一个方法,它返回一个@Bean
或一个类,这是一个@Component
,@Sevice
或-as在你的情况下 - 一个@Controller
。
您正在注释的方法没有定义bean,而只是bean的一个方法,无论如何都会被定义。
为了实现您的目标,您可以举例说明
Controller
并注释一个@Value
注释获取属性,只需添加一个if
到你的方法,使其返回类似404
的东西,以防属性未设置:后一个想法的例子:
@Value("${test.enabled}")
private boolean testEnabled;
public ResponseEntity test() {
if (!testEnabled) {
return ResponseEntity.notFound().build();
}
// ...
}
可能有更多选择。