Add locale customization of the ObjectMapper
Add a new spring.jackson.locale property to customize the locale of the ObjectMapper. Closes gh-3600
This commit is contained in:
parent
4c5a1036a3
commit
64461bb978
|
@ -162,6 +162,7 @@ public class JacksonAutoConfiguration {
|
|||
configureDateFormat(builder);
|
||||
configurePropertyNamingStrategy(builder);
|
||||
configureModules(builder);
|
||||
configureLocale(builder);
|
||||
return builder;
|
||||
}
|
||||
|
||||
|
@ -237,6 +238,13 @@ public class JacksonAutoConfiguration {
|
|||
builder.modulesToInstall(moduleBeans.toArray(new Module[moduleBeans.size()]));
|
||||
}
|
||||
|
||||
private void configureLocale(Jackson2ObjectMapperBuilder builder) {
|
||||
String locale = this.jacksonProperties.getLocale();
|
||||
if (locale != null) {
|
||||
builder.locale(locale);
|
||||
}
|
||||
}
|
||||
|
||||
private static <T> Collection<T> getBeans(ListableBeanFactory beanFactory,
|
||||
Class<T> type) {
|
||||
return BeanFactoryUtils.beansOfTypeIncludingAncestors(beanFactory, type)
|
||||
|
|
|
@ -95,6 +95,11 @@ public class JacksonProperties {
|
|||
*/
|
||||
private TimeZone timeZone = null;
|
||||
|
||||
/**
|
||||
* Locale used for formatting.
|
||||
*/
|
||||
private String locale;
|
||||
|
||||
public String getDateFormat() {
|
||||
return this.dateFormat;
|
||||
}
|
||||
|
@ -155,4 +160,12 @@ public class JacksonProperties {
|
|||
this.timeZone = timeZone;
|
||||
}
|
||||
|
||||
public String getLocale() {
|
||||
return this.locale;
|
||||
}
|
||||
|
||||
public void setLocale(String locale) {
|
||||
this.locale = locale;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -381,6 +381,7 @@ public class JacksonAutoConfigurationTests {
|
|||
"spring.jackson.time-zone:America/Los_Angeles");
|
||||
EnvironmentTestUtils.addEnvironment(this.context,
|
||||
"spring.jackson.date-format:zzzz");
|
||||
EnvironmentTestUtils.addEnvironment(this.context, "spring.jackson.locale:en");
|
||||
this.context.refresh();
|
||||
ObjectMapper objectMapper = this.context.getBean(
|
||||
Jackson2ObjectMapperBuilder.class).build();
|
||||
|
@ -402,6 +403,21 @@ public class JacksonAutoConfigurationTests {
|
|||
assertEquals("\"GMT+10:00\"", objectMapper.writeValueAsString(date));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void customLocale() throws JsonProcessingException {
|
||||
this.context.register(JacksonAutoConfiguration.class);
|
||||
EnvironmentTestUtils.addEnvironment(this.context, "spring.jackson.locale:de");
|
||||
EnvironmentTestUtils.addEnvironment(this.context,
|
||||
"spring.jackson.date-format:zzzz");
|
||||
this.context.refresh();
|
||||
ObjectMapper objectMapper = this.context
|
||||
.getBean(Jackson2ObjectMapperBuilder.class).build();
|
||||
|
||||
DateTime dateTime = new DateTime(1436966242231L, DateTimeZone.UTC);
|
||||
assertEquals("\"Koordinierte Universalzeit\"",
|
||||
objectMapper.writeValueAsString(dateTime));
|
||||
}
|
||||
|
||||
@Configuration
|
||||
protected static class MockObjectMapperConfig {
|
||||
|
||||
|
|
Loading…
Reference in New Issue