gpt4 book ai didi

java - 如何在没有 setter 的情况下绑定(bind)请求参数?

转载 作者:IT老高 更新时间:2023-10-28 13:47:10 25 4
gpt4 key购买 nike

我有一个带有 GET 处理程序的简单 Controller ,它接受一个对象来绑定(bind)请求参数:

@RestController
@RequestMapping("/test")
public class SampleController {

@GetMapping
public SomeResponse find(RequestParams params) {
// some code
}

}

RequestParams 是一个简单的 POJO 类:

public class RequestParams  {

private String param1;
private String param2;

// constructor, getter, and setters

}

一切正常,但我想摆脱 setter 以使对象不可变以供公众使用。在 documentation对于直到 Spring 5.0.2 的 @RequestMapping 处理程序方法,我们读到可能的有效方法参数是:

Command or form objects to bind request parameters to bean properties (via setters) or directly to fields

是否有可能以某种方式覆盖默认的 Spring Boot 配置,以便使用反射而不是 setter 将请求参数绑定(bind)到类属性?

2018 年更新

在更高版本的 Spring 文档中,引用的语句已被改写,不再包含有关将请求参数直接绑定(bind)到字段的信息。

最佳答案

除了@jihor 建议的 JSON 注释之外,您还可以尝试使用自定义 Web Data binder ,将以下代码添加到您的 Controller 或 Controller Advice跨多个 Controller 的跨功能类。

@InitBinder
public void initBinder(WebDataBinder binder) {
binder.initDirectFieldAccess();
}

关于java - 如何在没有 setter 的情况下绑定(bind)请求参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40896217/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com