Spring Boot和MVC:如何从application.properties为@RequestBody对象字段设置默认值?
我正在编写以下代码:Spring Boot和MVC:如何从application.properties为@RequestBody对象字段设置默认值?,spring,spring-mvc,spring-boot,Spring,Spring Mvc,Spring Boot,我正在编写以下代码: @RestController @RequestMapping("/user") public class UserController { @Autowired private JdbcTemplate jt; @RequestMapping("/getUsers") public ListResult getUsers(@RequestBody GetUsersArgs args) { // paging query t
@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
怎么能做到呢?那样不行。Spring只能替换托管bean中的值,您的值是根据请求参数构造的。您可以做的是向控制器中注入一个值并使用它
public class UserController
@Value("${userList.pageSize:500}")
private int pageSize;
然后,您可以在方法中使用此值设置对象上的
pageSize
。谢谢。但是GetUserArgs类不能是静态内部类(因为静态类的对象不能访问外部类的成员变量),对吗?为什么不。为什么您不能从getUsers
方法调用GetUserArgs
上的方法?只需在GetUserArgs
上添加一个setPageSize
方法,并在需要时调用。