Как @RequestMapping внутренне работает в Spring Boot?

@RestController
@RequestMapping("/employee")
public class Employee {
  @RequestMapping("/save")
  public void saveEmployee() {
    // saving employee
  }
}

Как @RequestMapping будет работать внутри для сопоставления запроса с методом saveEmployee?


person Rachit Munjal    schedule 26.07.2017    source источник
comment


Ответы (1)


Во время запуска приложения Spring идентифицирует все Bean с помощью XML Config, Java Config или сканирования компонентов и сохранит их в ApplicationContext.

Spring Boot автоконфигурирует для вас многие Bean-компоненты, включая RequestMappingHandlerMapping.

Когда этот объект Bean initialized, он сканирует ApplicationContext на предмет любых Bean-компонентов, помеченных @Controller.

Затем выполняется итерация по каждому Controller bean-компоненту и ищет методы, помеченные знаком @RequestMapping. Наконец, он сохраняет эти пары сопоставление / обработчик в MappingRegistry

DispatcherServlet является центральным обработчиком HTTP-запросов для вашего приложения и будет найдите ApplicationContext любые компоненты, реализующие интерфейс HandlerMapping, что и делает объект RequestMappingHandlerMapping (посредством наследования).

Затем он перебирает эти bean-компоненты, прося их разрешить соответствующий обработчик для этого запроса. Компонент RequestMappingHandlerMapping разрешит обработчик следующим образом: поиск его MappingRegistry.

Когда совпадение найдено, метод обработчика в конечном итоге становится invoked.

person Kyle Anderson    schedule 26.07.2017