@@ -104,6 +104,31 @@ void withNonPublicClass() {
104
104
assertThat (enhancedClass .getClassLoader ()).isEqualTo (classLoader .getParent ());
105
105
}
106
106
107
+ @ Test
108
+ void withNonPublicConstructor () {
109
+ ConfigurationClassEnhancer configurationClassEnhancer = new ConfigurationClassEnhancer ();
110
+
111
+ ClassLoader classLoader = new URLClassLoader (new URL [0 ], getClass ().getClassLoader ());
112
+ Class <?> enhancedClass = configurationClassEnhancer .enhance (MyConfigWithNonPublicConstructor .class , classLoader );
113
+ assertThat (MyConfigWithNonPublicConstructor .class ).isAssignableFrom (enhancedClass );
114
+ assertThat (enhancedClass .getClassLoader ()).isEqualTo (classLoader .getParent ());
115
+
116
+ classLoader = new OverridingClassLoader (getClass ().getClassLoader ());
117
+ enhancedClass = configurationClassEnhancer .enhance (MyConfigWithNonPublicConstructor .class , classLoader );
118
+ assertThat (MyConfigWithNonPublicConstructor .class ).isAssignableFrom (enhancedClass );
119
+ assertThat (enhancedClass .getClassLoader ()).isEqualTo (classLoader .getParent ());
120
+
121
+ classLoader = new CustomSmartClassLoader (getClass ().getClassLoader ());
122
+ enhancedClass = configurationClassEnhancer .enhance (MyConfigWithNonPublicConstructor .class , classLoader );
123
+ assertThat (MyConfigWithNonPublicConstructor .class ).isAssignableFrom (enhancedClass );
124
+ assertThat (enhancedClass .getClassLoader ()).isEqualTo (classLoader .getParent ());
125
+
126
+ classLoader = new BasicSmartClassLoader (getClass ().getClassLoader ());
127
+ enhancedClass = configurationClassEnhancer .enhance (MyConfigWithNonPublicConstructor .class , classLoader );
128
+ assertThat (MyConfigWithNonPublicConstructor .class ).isAssignableFrom (enhancedClass );
129
+ assertThat (enhancedClass .getClassLoader ()).isEqualTo (classLoader .getParent ());
130
+ }
131
+
107
132
@ Test
108
133
void withNonPublicMethod () {
109
134
ConfigurationClassEnhancer configurationClassEnhancer = new ConfigurationClassEnhancer ();
@@ -160,6 +185,19 @@ public String myBean() {
160
185
}
161
186
162
187
188
+ @ Configuration
189
+ public static class MyConfigWithNonPublicConstructor {
190
+
191
+ MyConfigWithNonPublicConstructor () {
192
+ }
193
+
194
+ @ Bean
195
+ public String myBean () {
196
+ return "bean" ;
197
+ }
198
+ }
199
+
200
+
163
201
@ Configuration
164
202
public static class MyConfigWithNonPublicMethod {
165
203
0 commit comments