Явные регистрации сопоставлений обработчиков

Я просматривал весеннюю документацию, в частности раздел сопоставления обработчиков, и узнал, что мы можем зарегистрировать метод сопоставления обработчиков во время выполнения. Я понимаю, как это делается, но я не могу понять, зачем вообще нам нужна такая функциональность?

Пожалуйста, обратитесь к следующему фрагменту кода для регистрации обработчиков.

@Autowired
  public void setHandlerMapping(RequestMappingHandlerMapping mapping, HelloRestController handler) 
        throws NoSuchMethodException {

    RequestMappingInfo info = RequestMappingInfo
            .paths("/mycustomapi").methods(RequestMethod.GET).build(); 
    Method method = HelloRestController.class.getMethod("customHandler"); 
    mapping.registerMapping(info, handler, method); 
}

Документация

Если кто-то может объяснить некоторые варианты использования, где это требуется, это будет полезно, спасибо.

0
0
66
1

Ответы 1

Я никогда этим не пользовался, но вот одна утилита, о которой я могу вспомнить:

Поскольку аннотации принимают в качестве параметров только постоянные выражения, вы не можете написать что-то подобное:

@GetMapping(requestMapping(...)) // The value for annotation GetMapping.value must be a constant expression
public String customHandler(...) {
 ...
}

Но вы могли бы написать это:

RequestMappingInfo info = RequestMappingInfo
    .paths(requestMapping(...))
    .methods(RequestMethod.GET)
    .build();

Другими словами, вы можете написать обработчики для URI, которые вычисляются (например, хранятся в файле конфигурации).

Другие вопросы по теме