java – Spring 4 MVC – Rest服务 – 在bean中使用默认值

我正在使用Spring 4.1.4并实现一个简单的REST服务.我有一个POST方法,它获取一个Person对象作为请求.

@ResponseStatus(value = HttpStatus.CREATED)
@RequestMapping(value = "",method = RequestMethod.POST,headers = "Accept=application/json",consumes = "application/json")
public void add(@Valid @RequestBody Person oPerson) throws Exception {
    //do the things
}

豆:

public class Person {

    public Person(){ }

    private String firstname;

    private String lastname;

    private Integer activeState;

    //getter+setter
}

我的问题是 – 是否有可能为bean中的属性设置认值.像这样的东西:

@Value(default=7)
private Integer activeState;

我知道在@RestController方法中使用@RequestParam注释时,可以使用@RequestParam设置认值(value =“activeState”,required = false,defaultValue =“2”)但是有可能做类似的事情课堂上的东西?

最佳答案
你的Person类不是真正的春天豆.它只是一个类,当您通过@RequestBody注释调用应用程序端点时,其参数已设置.不在你的通话体内的参数根本不会被绑定,所以为了解决你的问题,你可以这样做:

>像这样设置person类的认值(为方便起见,toString()被覆盖:

public class Person {

    public Person() {
    }

    private String firstName = "default";
    private String lastName = "default";
    private Integer activeState = 7;

    public String getFirstName() {
        return firstName;
    }

    public String getLastName() {
        return lastName;
    }

    public Integer getActiveState() {
        return activeState;
    }

    @Override
    public String toString() {
        return "Person{" +
                "firstName='" + firstName + '\'' +
                ",lastName='" + lastName + '\'' +
                ",activeState=" + activeState +
                '}';
    }
}

>对您的端点执行请求,例如使用此json数据:

{
    "firstName": "notDefault"
}

>如果在控制器中打印出person对象,您会注意到firstName获得了非认值,而其他值是认值:

public void add(@Valid @RequestBody Person oPerson) {
    System.out.println(oPerson);
}

控制台输出
Person {firstName =’notDefault’,lastName =’default’,activeState = 7}

相关文章

这篇文章主要介绍了spring的事务传播属性REQUIRED_NESTED的原...
今天小编给大家分享的是一文解析spring中事务的传播机制,相...
这篇文章主要介绍了SpringCloudAlibaba和SpringCloud有什么区...
本篇文章和大家了解一下SpringCloud整合XXL-Job的几个步骤。...
本篇文章和大家了解一下Spring延迟初始化会遇到什么问题。有...
这篇文章主要介绍了怎么使用Spring提供的不同缓存注解实现缓...