是否可以以编程方式控制@RestController
以启用或禁用它?我不想只是在每个@RequestMapping
方法中编写代码来执行某种 if (!enabled) { 返回 404Exception; }
我见过这个问题,但这只适用于启动时。我真正需要的是允许我多次启用或禁用控制器的东西。
我想过不同的方法,但不知道哪些在Spring可行。
@RestController
组件的生命周期,以便我可以随意创建和销毁它,但我不知道如何触发到endpoint的映射如果最终结果是,当您决定应该禁用某个特定endpoint时,您希望用404进行响应,那么您可以编写一个拦截器来检查您的enabled条件是否为false,如果是,则相应地设置响应。
例如:
@Component
public class ConditionalRejectionInterceptor extends HandlerInterceptorAdapter {
@Override
public boolean preHandle(HttpServletRequest request,
HttpServletResponse response, Object handler) throws Exception {
String requestUri = request.getRequestURI();
if (shouldReject(requestUri)) {
response.setStatus(HttpStatus.NOT_FOUND.value());
return false;
}
return super.preHandle(request, response, handler);
}
private boolean shouldReject(String requestUri) {
// presumably you have some mechanism of inferring or discovering whether
// the endpoint represented by requestUri should be allowed or disallowed
return ...;
}
}
在Spring Boot中,注册您自己的拦截器只需要实现一个WebMvcConfigrerAdapter
。例如:
@Configuration
public class CustomWebMvcConfigurer extends WebMvcConfigurerAdapter {
@Autowired
private HandlerInterceptor conditionalRejectionInterceptor;
@Override
public void addInterceptors(InterceptorRegistry registry) {
// you can use .addPathPatterns(...) here to limit this interceptor to specific endpoints
// this could be used to replace any 'conditional on the value of requestUri' code in the interceptor
registry.addInterceptor(conditionalRejectionInterceptor);
}
}
问题内容: 我们可以通过编程方式在自己的Java代码中使用javap吗? 例如,以下代码: 在命令行中使用javap,我们得到了: 我可以使用javap的API仅打印常量池吗? 问题答案: Apache BCEL 提供.class文件解析的封装,该封装提供了一组API。几乎对于.class文件中的每个元素,BECL API中都有一个对应的Class来表示它。因此,从某种角度来说,如果您只想打印出类
我正在尝试通过代码更改白色标记图像的颜色。我已经阅读了下面的代码应该改变颜色,但我的标记仍然是白色的。 我错过了什么吗?有没有其他方法可以更改位于我的res文件夹中的可绘制对象的颜色?
场景:我将默认设备方向设置为纵向。但是,我想允许横向模式的一些视图。 我的大多数视图不需要是横向的。但是有一些带有方向检测,允许以横向模式显示全尺寸线性图。 我希望我的应用程序在大多数情况下都以肖像为中心。 问:我如何在需要的时候冻结肖像,但在情况允许的情况下允许风景?
建议你使用声明式访问控制来实现业务网络定义中的访问控制规则。但是,你可以通过获取和测试当前参与者,在交易处理器中实现可编程的访问控制。你可以针对当前参与者的属性运行测试,以允许或拒绝交易处理器函数的执行。 在你开始之前 在你执行这些步骤之前,你必须对业务网络定义中的参与者进行建模,并将其部署为业务网络。你必须创建了这些参与者的一些实例,并向这些参与者发放身份。 下节的过程显示了使用下面参与者模型的
问题内容: 我正在尝试制作一个视图,该视图将作为一种“面板”,附加到视图控制器的右侧。 也就是说,它绑定到父视图控制器的尾部,顶部和底部边距,静态宽度为300 但是,我似乎无法正确解决问题,我要么打破约束,要么做某件事xcode告诉我是非法的。 我究竟做错了什么? 这是控制器中的代码 问题答案: 其实在你的代码的问题是,你没有设置的到,只要你想使用自动布局限制,那么你必须设置一个以虚假的。另一个问
问题内容: 当存在后置条件时,该方法的返回值一定不能为null,该怎么办? 我可以 但是断言可以关闭! 那可以吗 ? 还是针对此类情况使用用户定义的异常(例如NullReturnValueException)更好? 问题答案: 我认为在JVM为您执行操作之前尽早抛出NPE没问题-特别是对于null参数。对此似乎有一些争论,但是Java SE库中有许多示例正是这样做的。我不明白为什么NPE在您自己不