У меня есть контроллер с конечной точкой. Я хотел бы отключить эту конечную точку во время выполнения, чтобы она выглядела как приложение для пользователя в автономном режиме.
В настоящее время это делается для отключения конечной точки:
private static final Map<RequestMappingInfo, HandlerMethod> requestMappings = new HashMap<>();
this.context.getHandlerMethods().forEach((k, v) -> {
if (k.getPatternsCondition().getPatterns().contains("/customer")) {
requestMappings.put(k, v);
}
});
requestMappings.forEach((k, v) -> this.context.unregisterMapping(k));
И это для включения:
requestMappings.forEach((k, v) -> this.context.registerMapping(k, v.getBean(), v.getMethod()));
requestMappings.clear();
Это работает как чудо, бобы не зарегистрированы и зарегистрированы в во время выполнения. Однако, когда пользователь вызывает мое приложение, он получает 404 вместо тайм-аута соединения, что я и искал.
Я понимаю, почему я получаю 404. Запросы все еще входят в приложение, но путь не найден, потому что бины не зарегистрированы, поэтому он возвращает sa 404. Как мне go о решении «фактическая офлайн» ситуация, которая вообще ничего не возвращает.