package de.mlessmann.certassist.config; import com.fasterxml.jackson.annotation.JsonAutoDetect; import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.PropertyAccessor; import com.fasterxml.jackson.databind.MapperFeature; import org.springframework.boot.autoconfigure.jackson.Jackson2ObjectMapperBuilderCustomizer; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @Configuration public class JacksonConfiguration { /** * Customizes the objectMapper so that ONLY specifically annotated fields are serialized. * Other fields MUST NOT be serialized since they may contain sensitive information! */ @Bean public Jackson2ObjectMapperBuilderCustomizer customizeObjectMapper() { return builder -> builder .featuresToDisable( MapperFeature.AUTO_DETECT_FIELDS, MapperFeature.AUTO_DETECT_GETTERS, MapperFeature.AUTO_DETECT_IS_GETTERS ) .serializationInclusion(JsonInclude.Include.NON_EMPTY) .visibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.NONE) .visibility(PropertyAccessor.FIELD, JsonAutoDetect.Visibility.NONE) .visibility(PropertyAccessor.GETTER, JsonAutoDetect.Visibility.NONE) .visibility(PropertyAccessor.IS_GETTER, JsonAutoDetect.Visibility.NONE) .visibility(PropertyAccessor.SETTER, JsonAutoDetect.Visibility.PUBLIC_ONLY) .visibility(PropertyAccessor.CREATOR, JsonAutoDetect.Visibility.PUBLIC_ONLY) .build(); } }