可以使用属性启用/禁用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