我有一个 Spring MVC 应用程序,它使用 Jackson 和 @RequestBody 注释。
我在 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;
}
我假设没有 setter 并且没有字段的可见性, jackson 不会映射“启用”字段...但是如果我发送一个启用设置为 true 的正文,它会映射它,
任何人都可以建议我还需要做什么吗?
谢谢
最佳答案
只需使用 @JsonProperty
注释该字段并将访问权限设置为只读。
@JsonProperty(access = Access.READ_ONLY)
private boolean enabled;
PS。您不需要使用 @NotNull
进行注释或初始化为 false,因为您使用的是原始类型。
关于java - Spring MVC 强制 Jackson 只使用 setter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43740732/