可以使用属性启用/禁用Spring Boot @RestController吗?

给定带有的“标准” Spring Boot应用程序@RestController,例如

@RestController

@RequestMapping(value = "foo", produces = "application/json;charset=UTF-8")

public class MyController {

@RequestMapping(value = "bar")

public ResponseEntity<String> bar(

return new ResponseEntity<>("Hello world", HttpStatus.OK);

}

}

是否存在一种注释或技术,可 /除非存在/不存在某个应用程序属性的情况下完全阻止端点启动。

注意:测试方法内部的属性并爆炸不是解决方案,因为端点将存在。

我不在乎粒度:即仅启用/禁用方法或整个类都可以。


由于配置文件不是属性,因此通过配置文件进行控制无法解决我的问题。

回答:

我发现使用一个简单的解决方案@ConditionalOnExpression

@RestController

@ConditionalOnExpression("${my.controller.enabled:false}")

@RequestMapping(value = "foo", produces = "application/json;charset=UTF-8")

public class MyController {

@RequestMapping(value = "bar")

public ResponseEntity<String> bar(

return new ResponseEntity<>("Hello world", HttpStatus.OK);

}

}

加上这个注释,除非我有

my.controller.enabled=true

在我的application.properties文件中,控制器根本无法启动。

您还可以使用更方便的方法:

@ConditionalOnProperty("my.property")

行为与上面完全相同;如果该属性存在,并且"true",则组件启动,否则不启动。

以上是 可以使用属性启用/禁用Spring Boot @RestController吗? 的全部内容, 来源链接: utcz.com/qa/420607.html

回到顶部