Simplify registration of Jackson mixin types
See gh-30152
This commit is contained in:
committed by
Andy Wilkinson
parent
45f393b76b
commit
df417bf317
@@ -41,11 +41,14 @@ import org.springframework.beans.BeanUtils;
|
||||
import org.springframework.beans.factory.BeanFactoryUtils;
|
||||
import org.springframework.beans.factory.ListableBeanFactory;
|
||||
import org.springframework.boot.autoconfigure.AutoConfiguration;
|
||||
import org.springframework.boot.autoconfigure.AutoConfigurationPackages;
|
||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
|
||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
|
||||
import org.springframework.boot.autoconfigure.jackson.JacksonProperties.ConstructorDetectorStrategy;
|
||||
import org.springframework.boot.context.properties.EnableConfigurationProperties;
|
||||
import org.springframework.boot.jackson.JsonComponentModule;
|
||||
import org.springframework.boot.jackson.JsonMixinModule;
|
||||
import org.springframework.boot.jackson.JsonMixinScanPackages;
|
||||
import org.springframework.context.ApplicationContext;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
@@ -93,6 +96,15 @@ public class JacksonAutoConfiguration {
|
||||
return new JsonComponentModule();
|
||||
}
|
||||
|
||||
@Bean
|
||||
public JsonMixinModule jsonMixinModule(ApplicationContext context) {
|
||||
List<String> packages = JsonMixinScanPackages.get(context).getPackageNames();
|
||||
if (packages.isEmpty() && AutoConfigurationPackages.has(context)) {
|
||||
packages = AutoConfigurationPackages.get(context);
|
||||
}
|
||||
return new JsonMixinModule(context, packages);
|
||||
}
|
||||
|
||||
@Configuration(proxyBeanMethods = false)
|
||||
@ConditionalOnClass(Jackson2ObjectMapperBuilder.class)
|
||||
static class JacksonObjectMapperConfiguration {
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2012-2021 the original author or authors.
|
||||
* Copyright 2012-2022 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
@@ -52,6 +52,7 @@ import org.junit.jupiter.api.Test;
|
||||
import org.springframework.boot.autoconfigure.AutoConfigurations;
|
||||
import org.springframework.boot.autoconfigure.http.HttpMessageConvertersAutoConfiguration;
|
||||
import org.springframework.boot.jackson.JsonComponent;
|
||||
import org.springframework.boot.jackson.JsonMixinModule;
|
||||
import org.springframework.boot.jackson.JsonObjectSerializer;
|
||||
import org.springframework.boot.test.context.runner.ApplicationContextRunner;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
@@ -90,6 +91,11 @@ class JacksonAutoConfigurationTests {
|
||||
});
|
||||
}
|
||||
|
||||
@Test
|
||||
void jsonMixinModuleShouldBeAutoconfigured() {
|
||||
this.contextRunner.run((context) -> assertThat(context).hasSingleBean(JsonMixinModule.class));
|
||||
}
|
||||
|
||||
@Test
|
||||
void noCustomDateFormat() {
|
||||
this.contextRunner.run((context) -> {
|
||||
|
||||
Reference in New Issue
Block a user