【问题标题】:Spring Boot and MVC: How to set default value for @RequestBody object fields from application.properties?Spring Boot 和 MVC:如何从 application.properties 为 @RequestBody 对象字段设置默认值?
【发布时间】: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。

怎么做?

【问题讨论】:

    标签: spring spring-mvc spring-boot


    【解决方案1】:

    那样做是行不通的。 Spring 只能替换托管 bean 中的值,您的是由请求参数构造的。你可以做的就是在你的控制器中注入一个值并使用它

    public class UserController
    
        @Value("${userList.pageSize:500}")
        private int pageSize;
    

    然后,您可以在方法中使用此值在对象上设置pageSize

    【讨论】:

    • 谢谢。但是GetUserArgs类不能是静态内部类(因为静态类的对象不能访问外部类的成员变量),是这样吗?
    • 为什么不呢。为什么你不能从getUsers 方法调用GetUserArgs 上的方法?只需在GetUserArgs 上添加setPageSize 方法并在需要时调用。
    猜你喜欢
    • 1970-01-01
    • 2020-09-17
    • 2015-06-22
    • 2017-01-29
    • 1970-01-01
    • 2019-02-15
    • 1970-01-01
    • 2019-05-20
    • 2015-09-12
    相关资源
    最近更新 更多