Spring MVC:将复杂对象作为参数

Ann*_*nna 5 java spring spring-mvc spring-boot

我开始学习Spring Boot,但遇到了问题。我有以下代码:

@RestController
public class UserController {

    @RequestMapping("/")
    public String getMessageInfo(Message message) {
        return "Id is " + message.getId() + ", message is " + message.getMessage() + ", parameter good is " + message.isGood();
    }
}
Run Code Online (Sandbox Code Playgroud)

类消息:

public class Message {
    private String message;
    private int id;
    private boolean good;

    public Message() {}

    public Message(int id) {this.id = id;}

    public Message(String message) {this.message = message;}

    public Message(boolean good) {this.good = good;}

    public Message(String message, boolean good, int id) {
        this.message = message;
        this.good = good;
        this.id = id;
    }

    public String getMessage() {
        return message;
    }

    public int getId() {
        return id;
    }

    public boolean isGood() {
        return good;
    }
}
Run Code Online (Sandbox Code Playgroud)

当我尝试做这样的事情时:

RestTemplate request = new RestTemplate();
String info = request.getForObject("http://localhost:8080/?id=4", String.class);
Run Code Online (Sandbox Code Playgroud)

的值将id被忽略。当我使用boolean good参数发送请求时,会出现相同的问题(例如localhost:8080/?good=true)。它被称为默认构造函数,而不是Message(boolean)/ Message(int)。但是当我做类似的事情时,localhost:8080/?message=1234它不会被忽略。你能解释一下是什么问题吗?

还有一个问题:我Message可以getMessageInfo用不同于的方式将类的实例发送到localhost:8080/?message=1234&good=true&id=145吗?如果我有3个以上的参数?例如,如果class Message有100个参数?