@ Congroller,@ RequestMapping,@ RequestParam在Spring Boot内部如何工作?

问题描述 投票:1回答:2

如果我的理解是正确的,则可以自由地为saveEmployee()添加/删除参数。例如,当您按如下方式添加“ loc”时,事件发生时saveEmployee()会收到“非null对象”。对于queryParams也是如此。

@Cntroller
public class Employee {
  @RequestMapping("/save")
  public void saveEmployee(Locale loc, 
                           @RequestParam Map<String, String> queryParams) {
    // saving employee
  }
}

仅通过在此处添加参数“ loc”,该方法将如何接收非null的Locale对象?我想知道其背后的逻辑。

java spring spring-boot annotations
2个回答
0
投票

Spring的DispatcherServlet将从客户端转发请求到您的控制器,为您提供该参数。为此,它从ApplicationContext中搜索bean(控制器)所属的对象。


0
投票

Spring通过使用LocaleResolverLocaleContextResolver为您完成,对于当前请求的语言环境,由可用的最特定的语言环境解析器确定,实际上是MVC环境中已配置的LocaleResolver / LocaleContextResolver] >

21.3.3 Defining @RequestMapping handler methods

@RequestMapping处理程序方法可以具有非常灵活的签名。下一节介绍了受支持的方法参数和返回值。

可以以任意顺序使用大多数参数,只有BindingResult参数除外。

Supported method argument types

当前请求语言环境的java.util.Locale,由可用的最特定的语言环境解析器确定,实际上是MVC环境中配置的LocaleResolver / LocaleContextResolver。

© www.soinside.com 2019 - 2024. All rights reserved.