java - spring 如何将参数注入(inject)到 Controller 方法中

标签 java spring

public ModelAndView loginPage(HttpServletRequest request, Locale locale) {}

如您所知,Spring 将 HttpServletRequestLocale 注入(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/

相关文章:

FFmpeg - 无法识别的选项 'map [outv]'

java - Hibernate OO 设计问题

java - Spring @Autowired 是按名称还是按类型注入(inject) bean?

spring - 获取 POJO 类中的 Servlet Request 对象

java - JSP 连续滚动 在 session 中存储页面变量

java - Install4j 安装程序在出现 NullPointerException 的第一个欢迎屏幕之前停止

java - Maven 项目中的每个模块都应该有自己的 Spring 应用程序上下文吗?

java - Spring ThreadPoolTask​​Executor 的线程计数始终为 1

java - Spring AOP : Annotated pointcuts for a method with @Transactional annotated method?

java - JDK 1.7错误: Could not find or load main class when using command "java -cp" with multiple jars