spring-mvc 如何找到正确的 class 实例化并用 POST-REQUEST 字段填充其数据

how spring-mvc finds the right class to instantiate and fill its data with POST-REQUEST fields

首先,我对 spring mvc 还很陌生,所以 ..

mvc 如何在向某个控制器发送 post 请求时找到正确的 class 实例化并填充其对象属性。 例如,假设我有这个 class

package springmvc_test.user

public class User {
    private String username;
    private String password;
    public String getUsername() {
        return username;
    }
    public void setUsername(String username) {
        this.username = username;
    }
    public String getPassword() {
        return password;
    }
    public void setPassword(String password) {
        this.password = password;
    }
}

和控制器class作为流动

@Controller
@RequestMapping(value = {"/user"} )
public class UserController {
    private List<User> users;

    @Autowired
    public UserController(List<User> users) {
        this.users = users;
    }

    @RequestMapping(value = "/add",method = POST)
    public String addUser(User user,Model m){
        users.add(user);
        //do some other stuf
        //.....
    }

}

当我做 post-请求 http://localhost/myapp/user/add 以及与 User class 属性同名的表单字段, 它工作正常。

但我的问题是 springmvc 如何找到 User class 并实例化它?尽管 User class 根本没有注释

注意: 我知道 spring 通过将它们的名称与表单字段名称

匹配来绑定 User 对象属性

作为 Spring Framework reference states in the respective section 你应该使用:

  • @RequestBody,如果你想让 HttpMessageConverter 将你的 HTTP 请求反序列化为任何 Java Object
  • @ModelAttribute 如果您想访问模型变量,例如也超出了您的 HTTP 请求。

关于您要与您的请求数据相关联的参数。