Boh*_*ian 47 java spring application-settings 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);
}
}
Run Code Online (Sandbox Code Playgroud)
有没有阻止端点开始的注释或技术可言,如果/除非某个应用程序属性存在/不存在.
注意:测试方法内的属性并且爆炸不是解决方案,因为端点将存在.
我不关心粒度:即只启用/禁用方法或整个类都很好.
由于配置文件不是属性,因此通过配置文件进行控制并不能解决我的问题.
Boh*_*ian 76
我找到了一个简单的解决方案@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);
}
}
Run Code Online (Sandbox Code Playgroud)
添加此注释,除非我有
my.controller.enabled=true
Run Code Online (Sandbox Code Playgroud)
在我的application.properties文件中,控制器根本不会启动.
您还可以使用更方便:
@ConditionalOnProperty("my.property")
Run Code Online (Sandbox Code Playgroud)
其行为与上述完全相同; 如果属性存在且"true"组件启动,否则不启动.
| 归档时间: |
|
| 查看次数: |
23379 次 |
| 最近记录: |