Skip to content

Commit f38bd7a

Browse files
committed
Extract GSON/Jackson config to inner classes
Update JsonTestersAutoConfiguration so that GSON and Jackson specific configuration are inner classes. This should prevent ClassNotFound exception when the libraries are not on the classpath. Fixes gh-6502
1 parent 80a1897 commit f38bd7a

File tree

1 file changed

+21
-12
lines changed

1 file changed

+21
-12
lines changed

spring-boot-test-autoconfigure/src/main/java/org/springframework/boot/test/autoconfigure/json/JsonTestersAutoConfiguration.java

Lines changed: 21 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -66,27 +66,36 @@ public FactoryBean<BasicJsonTester> BasicJsonTesterFactoryBean() {
6666
null);
6767
}
6868

69-
@Bean
70-
@Scope("prototype")
7169
@ConditionalOnClass(ObjectMapper.class)
72-
@ConditionalOnBean(ObjectMapper.class)
73-
public FactoryBean<JacksonTester<?>> jacksonTesterFactoryBean(ObjectMapper mapper) {
74-
return new JsonTesterFactoryBean<JacksonTester<?>, ObjectMapper>(
75-
JacksonTester.class, mapper);
70+
private static class JacksonJsonTestersConfiguration {
71+
72+
@Bean
73+
@Scope("prototype")
74+
@ConditionalOnBean(ObjectMapper.class)
75+
public FactoryBean<JacksonTester<?>> jacksonTesterFactoryBean(
76+
ObjectMapper mapper) {
77+
return new JsonTesterFactoryBean<JacksonTester<?>, ObjectMapper>(
78+
JacksonTester.class, mapper);
79+
}
80+
7681
}
7782

78-
@Bean
79-
@Scope("prototype")
8083
@ConditionalOnClass(Gson.class)
81-
@ConditionalOnBean(Gson.class)
82-
public FactoryBean<GsonTester<?>> gsonTesterFactoryBean(Gson gson) {
83-
return new JsonTesterFactoryBean<GsonTester<?>, Gson>(GsonTester.class, gson);
84+
private static class GsonJsonTestersConfiguration {
85+
86+
@Bean
87+
@Scope("prototype")
88+
@ConditionalOnBean(Gson.class)
89+
public FactoryBean<GsonTester<?>> gsonTesterFactoryBean(Gson gson) {
90+
return new JsonTesterFactoryBean<GsonTester<?>, Gson>(GsonTester.class, gson);
91+
}
92+
8493
}
8594

8695
/**
8796
* {@link FactoryBean} used to create JSON Tester instances.
8897
*/
89-
private class JsonTesterFactoryBean<T, M> implements FactoryBean<T> {
98+
private static class JsonTesterFactoryBean<T, M> implements FactoryBean<T> {
9099

91100
private final Class<?> objectType;
92101

0 commit comments

Comments
 (0)