Spring Boot 和 MVC:如何从 application.properties 为 @RequestBody 对象字段设置默认值?
Posted
技术标签:
【中文标题】Spring Boot 和 MVC:如何从 application.properties 为 @RequestBody 对象字段设置默认值?【英文标题】:Spring Boot and MVC: How to set default value for @RequestBody object fields from application.properties? 【发布时间】:2013-12-26 12:31:32 【问题描述】:我正在编写以下代码:
@RestController
@RequestMapping("/user")
public class UserController
@Autowired private JdbcTemplate jt;
@RequestMapping("/getUsers")
public ListResult getUsers(@RequestBody GetUsersArgs args)
// paging query that returns ListResult object.
// ...
private static class GetUsersArgs
public int firstRowIndex = 0;
public int pageSize = 500;
我要做的是,从 Spring Boot 的 application.properties 文件中为 GetUsersArgs 对象的 pageSize 字段设置默认值。
当application.properties文件内容如下时,
server.port: 9000
management.port: 9001
userList.pageSize: 100
pageSize 字段必须设置为 100。否则,设置为 500。
怎么做?
【问题讨论】:
【参考方案1】:那样做是行不通的。 Spring 只能替换托管 bean 中的值,您的是由请求参数构造的。你可以做的就是在你的控制器中注入一个值并使用它
public class UserController
@Value("$userList.pageSize:500")
private int pageSize;
然后,您可以在方法中使用此值在对象上设置pageSize
。
【讨论】:
谢谢。但是GetUserArgs类不能是静态内部类(因为静态类的对象不能访问外部类的成员变量),是这样吗? 为什么不呢。为什么你不能从getUsers
方法调用GetUserArgs
上的方法?只需在GetUserArgs
上添加setPageSize
方法并在需要时调用。以上是关于Spring Boot 和 MVC:如何从 application.properties 为 @RequestBody 对象字段设置默认值?的主要内容,如果未能解决你的问题,请参考以下文章
在 Spring Boot App 中使用 Jquery 和 FormData 提交表单字段并上传 File 到 Spring MVC Controller
从Spring MVC 到 Spring BOOT的简化道路
Spring MVC或Spring Boot配置默认访问页面不生效?
Spring-boot - 如何同时使用 Resteasy JAX-RS 和 Spring MVC 控制器
如何将 Spring Boot 项目迁移到旧 Spring MVC 项目。面临的问题,如何在遗留 Spring MVC 项目中读取 application.properties 文件