12 Mayıs 2019 Pazar

SpringBoot Jackson2ObjectMapperBuilder Sınıfı

Giriş
Jackson ayarlarını özelleştirmek için 3 tane yöntem ver
1. application.properties ile özeleştirmek
2. Jackson2ObjectMapperBuilderCustomizer  ile özeleştirmek
3. Jackson2ObjectMapperBuilder ile özeleştirmek
4. ObjectMapper nesnesi direkt yaratılır ve özelleştirilir


Yöntem 2
Bu sınıfı kullanmak için SpringMVC projesinde şöyle yaparız.
@Configuration
@EnableWebMvc
public class WebConfiguration extends WebMvcConfigurerAdapter {

 ... other configurations

  @Override
  public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
    Jackson2ObjectMapperBuilder builder = new Jackson2ObjectMapperBuilder();
    ...
    converters.add(new MappingJackson2HttpMessageConverter(builder.build()));
    converters.add(new MappingJackson2XmlHttpMessageConverter(builder
      .createXmlMapper(true).build()));
  }
}
Yöntem 3
SpringBoot projesinde şöyle yaparız.
@SpringBootApplication
public class Application extends SpringBootServletInitializer {

  @Bean
  public ObjectMapper objectMapper(Jackson2ObjectMapperBuilder builder) {
    ObjectMapper objectMapper = builder.createXmlMapper(false).build();
    ...
    return objectMapper;
  }
}
constructor
Şöyle yaparız.
Jackson2ObjectMapperBuilder builder = new Jackson2ObjectMapperBuilder();
configure metodu
Şöyle yaparız
@Bean
public ObjectMapper objectMapper(Jackson2ObjectMapperBuilder builder) {
  ObjectMapper objectMapper = builder.createXmlMapper(false).build();
  objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, true);
  return objectMapper;
}
dateFormat metodu
Şöyle yaparız.
builder.dateFormat(new SimpleDateFormat("yyyy-MM-dd"));
indentOutput metodu
Şöyle yaparız.
builder.indentOutput(true);
modulesToInstall metodu
Şöyle yaparız.
@Bean
public Jackson2ObjectMapperBuilder configureObjectMapper() {
  return new Jackson2ObjectMapperBuilder()
    .modulesToInstall(Hibernate5Module.class);
}
propertyNamingStrategy
Örnek
Şöyle yaparız.
builder.propertyNamingStrategy
  (PropertyNamingStrategy.CAMEL_CASE_TO_LOWER_CASE_WITH_UNDERSCORES);
Örnek
Şöyle yaparız
@Bean
public Jackson2ObjectMapperBuilder jacksonBuilder() {
  Jackson2ObjectMapperBuilder b = new Jackson2ObjectMapperBuilder();
  b.propertyNamingStrategy(PropertyNamingStrategy.LOWER_CAMEL_CASE);
  return b;
}
serializationInclusion metodu
Örnek
Şöyle yaparız
@Bean
public Jackson2ObjectMapperBuilder jacksonObjectMapperBuilder() {
  return new Jackson2ObjectMapperBuilder()
     .serializationInclusion(JsonInclude.Include.NON_NULL);
}
Örnek
Şöyle yaparız.
builder.serializationInclusion(Include.NON_EMPTY);
Örnek
Şöyle yaparız.
builder.serializationInclusion(JsonInclude.Include.NON_NULL);

Hiç yorum yok:

Yorum Gönder