@Test public void customPropertyNamingStrategyField() throws Exception { this.context.register(JacksonAutoConfiguration.class); EnvironmentTestUtils.addEnvironment(this.context, "spring.jackson.property-naming-strategy:SNAKE_CASE"); this.context.refresh(); ObjectMapper mapper = this.context.getBean(ObjectMapper.class); assertThat(mapper.getPropertyNamingStrategy()) .isInstanceOf(SnakeCaseStrategy.class); }
@Test public void customPropertyNamingStrategyClass() throws Exception { this.context.register(JacksonAutoConfiguration.class); EnvironmentTestUtils.addEnvironment(this.context, "spring.jackson.property-naming-strategy:com.fasterxml.jackson.databind.PropertyNamingStrategy.SnakeCaseStrategy"); this.context.refresh(); ObjectMapper mapper = this.context.getBean(ObjectMapper.class); assertThat(mapper.getPropertyNamingStrategy()) .isInstanceOf(SnakeCaseStrategy.class); }
public static String convertToSnakeCaseIfSupported(String name, Class<?> specType) { RosettaNaming rosettaNaming = getAnnotation(specType, RosettaNaming.class); boolean snakeCasing = rosettaNaming != null && (rosettaNaming.value().equals(LowerCaseWithUnderscoresStrategy.class) || rosettaNaming.value().equals(SnakeCaseStrategy.class)); if (snakeCasing && !name.contains("_")) { return CaseFormat.LOWER_CAMEL.to(CaseFormat.LOWER_UNDERSCORE, name); } return name; }