- Create two (non-functioning) demo endpoints to check the swagger UI with - Configure Jackson to only serialize specific attributes - Configure SpringDoc so that only attributes known to Jackson are shown - Add some shortcut annotations for Json formatting
35 lines
No EOL
1.7 KiB
Java
35 lines
No EOL
1.7 KiB
Java
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();
|
|
}
|
|
} |