Я не думаю, что есть прямой способ отключить построенное отображение запроса, но мы можем отключить API многими способами с некоторым условием.
Вот 2 способа отключения с помощью профиля Spring или свойств JVM.
public class SampleController {
@Autowired
Environment env;
@RequestMapping(value = "/foo", method = RequestMethod.POST)
public String foo(HttpServletResponse response) {
// Using profile
if (env.acceptsProfiles("staging")) {
response.setStatus(404);
return "";
}
// Using JVM options
if("true".equals(System.getProperty("DISABLE_FOO"))) {
response.setStatus(404);
return "";
}
return "";
}
}
Если вы думаете, что футуристическое решение с использованием облачной конфигурации является лучшим подходом. https://spring.io/guides/gs/centralized-configuration/
Использование условных компонентов
Это позволяет создать компонент с условиями, если при запуске условие не выполнено, весь компонент никогда не будет построен. Сгруппируйте все дополнительные сопоставления запросов с новым контроллером и добавьте условную аннотацию
@Conditional(ConditionalController.class)
public class SampleController {
@Autowired
Environment env;
@RequestMapping(value = "/foo", method = RequestMethod.POST)
public String foo(HttpServletResponse response) {
return "";
}
public static class ConditionalController implements Condition {
@Override
public boolean matches(ConditionContext context, AnnotatedTypeMetadata metadata) {
return context.getEnvironment().acceptsProfiles("staging"); // Or whatever condition
}
}
}