java - 如何在 Spring 上有条件地创建 @Controller 和 @Service 实例
问题描述
我正在使用 Spring Boot 1.5.9。
有没有办法打开/关闭@Controller
和@Services
?
诸如@ConditionalOnProperty
,@Conditional
对于豆类的东西。
@ConditionalController // <--- something like this
@RestController
public class PingController {
@Value("${version}")
private String version;
@RequestMapping(value = CoreHttpPathStore.PING, method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
public ResponseEntity<Map<String, Object>> ping() throws Exception {
HashMap<String, Object> map = new HashMap<>();
map.put("message", "Welcome to our API");
map.put("date", new Date());
map.put("version", version);
map.put("status", HttpStatus.OK);
return new ResponseEntity<>(map, HttpStatus.OK);
}
}
然后使用一些配置bean来加载它。
解决方案
@ConditionalOnProperty
也应该适用于控制器(或服务),因为它也是一个 Spring bean。
添加到您的 PingController
@ConditionalOnProperty(prefix="ping.controller",
name="enabled",
havingValue="true")
@RestController
public class PingController {...}
并到 application.properties 打开/关闭它
ping.controller.enabled=false
推荐阅读
- opengl - 确定与 glsl 片段着色器中每个顶点的距离
- flutter - 颤振自定义字体权重没有被拾起
- c# - 使用 Azure 服务总线队列侦听器定期在 RenewToken 上接收未经授权的访问错误
- vba - 使用变量更新表
- macos - 如何保护 Mac OS 系统扩展安全端点不被杀死
- flutter - 无法重置 FormBuilder()
- javascript - Javascript 数字不在具有功能的输入字段中
- php - 在移动设备上隐藏 HTML
- python - 如何在 yocto poky 层中启用 python 脚本的日志记录?
- python - xdist 在 pytest 中将对象作为参数传递时显示错误