Dan*_*ski 11 java spring spring-mvc spring-boot
我有一个带有GET处理程序的简单控制器,它接受一个绑定请求参数的对象:
@RestController
@RequestMapping("/test")
public class SampleController {
@GetMapping
public SomeResponse find(RequestParams params) {
// some code
}
}
Run Code Online (Sandbox Code Playgroud)
这RequestParams是一个简单的POJO类:
public class RequestParams {
private String param1;
private String param2;
// constructor, getter, and setters
}
Run Code Online (Sandbox Code Playgroud)
Everthing工作正常,但我想摆脱设置者使对象不可变为公共使用.在Spring 5.0.2 之前的处理程序方法的文档中@RequestMapping,我们读到可能的有效方法参数是:
命令或表单对象将请求参数绑定到bean属性(通过setter)或直接绑定到字段
是否有可能以某种方式覆盖默认的Spring Boot配置,以便使用反射而不是使用setter将请求参数绑定到类属性?
更新2018年
在Spring的文档的更高版本中,引用的语句已被重新描述,并且不再包含有关绑定请求参数的信息直接到字段.
除了@jihor建议的JSON注释之外,您还可以尝试使用自定义Web数据绑定器,将以下代码添加到控制器或Controller Advice类中,以跨多个控制器扩展功能。
@InitBinder
public void initBinder(WebDataBinder binder) {
binder.initDirectFieldAccess();
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2032 次 |
| 最近记录: |