Spring MVC迫使杰克逊只使用二传手

时间:2017-05-02 14:40:49

标签: java json spring spring-mvc jackson

我有一个使用Jackson和@RequestBody注释的Spring MVC应用程序。

我在POJO中有一个我不希望Jackson映射的字段,所以我让lombok将setter访问级别设置为NONE。

@NotNull
@Setter(AccessLevel.NONE)
private boolean enabled = false;

我试图通过配置为:

来强制Spring的ObjectMapper bean只使用setter
@Bean
@Primary
public ObjectMapper getObjectMapper() {
    ObjectMapper mapper = new ObjectMapper();
    mapper.setVisibility(PropertyAccessor.FIELD, JsonAutoDetect.Visibility.NONE);
    return mapper;
}

我认为没有制定者且没有该领域的可见性杰克逊不会映射“已启用”字段...但是如果我发送一个启用了设置为true的正文,则会映射它,

有人可以建议我还需要做什么吗?

由于

1 个答案:

答案 0 :(得分:3)

只需使用@JsonProperty注释该字段,并将访问权限设置为只读。

@JsonProperty(access = Access.READ_ONLY)
private boolean enabled;

PS。由于您使用的是基本类型,因此无需使用@NotNull进行批注或初始化为false。