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;

我知道在方法中使用@RequestParam注释时@RestController可以设置默认值,@RequestParam(value="activeState",

required=false, defaultValue="2")但是有可能在类级别做类似的事情吗?

回答:

您的Person类并不是真正的弹跳豆。它只是一个类,由于@RequestBody注释而在您调用应用程序端点时会设置参数。不在调用主体中的参数将不会被绑定,因此要解决您的问题,您可以执行以下操作:

  1. 像这样为您的人员类别设置默认值(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 +

    '}';

    }

    }

  2. 对端点执行请求,例如使用以下json数据:

    {

    "firstName": "notDefault"

    }

  3. 如果在控制器中打印出人员对象,则会注意到firstName获得了非默认值,而其他则为默认值:

    public void add(@Valid @RequestBody Person oPerson) {

    System.out.println(oPerson);

    }

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

以上是 Spring 4 MVC-REST服务-在Bean中使用默认值 的全部内容, 来源链接: utcz.com/qa/423612.html

回到顶部