public ModelAndView loginPage(HttpServletRequest request, Locale locale) {}
如您所知,Spring 将 HttpServletRequest
和 Locale
注入(inject)到该方法中。我想知道
它是如何在幕后完成的?我的猜测是,背后有一个数据转换系统在工作
获取 http 请求 header 和正文数据并将它们填充到给定的合适的类中
在编码器的参数中。我说得对吗?
最佳答案
使用 Spring MVC 时,有多个部分需要移动来解决映射 HandlerMapping 和执行 HandlerAdapter 的问题。
扫描每个@Controller
以查找@RequestMapping
注释方法,这些方法根据@RequestMapping
中可用的元数据映射到URL注释,这是由 RequestMappingHandlerMapping
完成的类(class)。
当请求传入时,特定方法会与传入请求相匹配。此选定方法通过 RequestMappingHandlerAdapter
它查阅所有方法参数。方法参数的实际处理留给不同的 HandlerMethodArgumentResolver
实现(您也可以实现您自己的)。
方法的返回值也会发生同样的情况,尽管它被委托(delegate)给 HandlerMethodReturnValueHandler
.
关于java - spring 如何将参数注入(inject)到 Controller 方法中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26802642/