URL参数如何映射到Spring启动控制器上的对象?

时间:2018-03-23 21:27:15

标签: spring spring-boot

我有下面的控制器

@RequestMapping("/hello")
public void callHello(MyObject myObject) {
    //code
}

这里MyObject是一个带有getter和setter的POJO类

public class MyObj {
    private String fName;
    private String lName;
    //getter and setter
}

我通过ajax调用将此控制器称为

var jqxhr = $.ajax({
    url:'hello?fName=testFname&lName=testLname',
    type:"GET",
    dataType:'JSON'
}});

这工作正常,但我想知道spring的特性是什么,它自动将url参数fname和lName以及myObject的字段映射。

1 个答案:

答案 0 :(得分:3)

在幕后,有一个WebDataBinder可以胜任。根据文档,这是:

  

特殊DataBinder,用于从Web请求参数到JavaBean对象的数据绑定。

WebBindingInitializer初始化它们。您也可以创建自己的ConfigurableWebBindingInitializer

根据Spring Boot Reference Guide

  

Spring MVC使用WebBindingInitializer为特定请求初始化WebDataBinder。如果你创建自己的ConfigurableWebBindingInitializer @Bean,Spring Boot会自动配置Spring MVC来使用它。