Технический ответ заключается в использовании механизма SpringMVC HandlerAdapter.
Посредством Spring DispatcherServlet для каждого отправленного запроса создается и настраивается адаптер Handler.
Я думаю, что «весенняя магия» в этом случае - это AnnotationMethodHandlerAdapter, расположенный в весенних пакетах mvc. Этот адаптер в основном будет «сопоставлен» с HTTP-запросом на основе HTTP-маршрутов, методов HTTP и параметров запроса, привязанных к запросу.
Так важно, когда сервлет диспетчера весны идентифицирует запрос с помощью пути «/», он проверит методы в своем контейнере, аннотированные аннотацией RequestMapping.
В вашем случае он найдет это ...
Затем начинается настоящая магия ...
Используя java-отражение, Spring затем разрешит аргументы вашего метода контроллера. Таким образом, в вашем случае Locale и модель будут автоматически переданы вам. Если вы включили другой веб-параметр, такой как HttpSession, который будет передан вам.