SpringREST在不使用setter的情况下反序列化属性

SpringREST在不使用setter的情况下反序列化属性,spring,rest,Spring,Rest,我有一个没有setter的类,以避免从客户端进行设置。 但我仍然在REST方法中得到值 public class Entity implements Serializable { @JsonProperty(access = JsonProperty.Access.READ_ONLY) private SystemUserEntity createdBy; public SystemUserEntity getCreatedBy(){ return thi

我有一个没有setter的类,以避免从客户端进行设置。 但我仍然在REST方法中得到值

public class Entity implements Serializable {
    @JsonProperty(access = JsonProperty.Access.READ_ONLY)
    private SystemUserEntity createdBy;

    public SystemUserEntity getCreatedBy(){
       return this.createdBy;
    }
}
这是我的方法:

@PutMapping("/some-request/")
public void update(@RequestBody Entity entity) {

}
这个问题是
实体
变量的createBy值。。。 怎么可能呢?它是只读的,没有设置器


谢谢

在Jackson中,getter将使私有字段既可序列化又可反序列化。setter使私有字段仅可反序列化

@JsonIgnoreProperties(ignoreUnknown = true)
public class Entity {
    private String createdBy;
    private int val;

    @JsonProperty(access = JsonProperty.Access.READ_ONLY)
    public String getCreatedBy() {
        return createdBy;
    }

    public int getVal() {
        return val;
    }
}

@Test
    public void testReadOnly() throws IOException {
        ObjectMapper objectMapper = new ObjectMapper();
        String test = "{\"createdBy\": \"2019-09-04\", \"val\": 1}";
        Entity entity = objectMapper.readValue(test, Entity.class);
        assertEquals(1, entity.getVal());
        assertNull(entity.getCreatedBy());
    }

仅将@JsonProperty添加到getter,而不是属性。