@@ -129,6 +129,22 @@ void enhancementIsPresentBecauseSingletonSemanticsAreRespectedUsingAsm() {
129
129
assertThat (beanFactory .getDependentBeans ("config" )).contains ("bar" );
130
130
}
131
131
132
+ @ Test // gh-34663
133
+ void enhancementIsPresentForAbstractConfigClassWithoutBeanMethods () {
134
+ beanFactory .registerBeanDefinition ("config" , new RootBeanDefinition (AbstractConfigWithoutBeanMethods .class ));
135
+ ConfigurationClassPostProcessor pp = new ConfigurationClassPostProcessor ();
136
+ pp .postProcessBeanFactory (beanFactory );
137
+ RootBeanDefinition beanDefinition = (RootBeanDefinition ) beanFactory .getBeanDefinition ("config" );
138
+ assertThat (beanDefinition .hasBeanClass ()).isTrue ();
139
+ assertThat (beanDefinition .getBeanClass ().getName ()).contains (ClassUtils .CGLIB_CLASS_SEPARATOR );
140
+ Foo foo = beanFactory .getBean ("foo" , Foo .class );
141
+ Bar bar = beanFactory .getBean ("bar" , Bar .class );
142
+ assertThat (bar .foo ).isSameAs (foo );
143
+ assertThat (beanFactory .getDependentBeans ("foo" )).contains ("bar" );
144
+ String [] dependentsOfSingletonBeanConfig = beanFactory .getDependentBeans (SingletonBeanConfig .class .getName ());
145
+ assertThat (dependentsOfSingletonBeanConfig ).containsOnly ("foo" , "bar" );
146
+ }
147
+
132
148
@ Test
133
149
void enhancementIsNotPresentForProxyBeanMethodsFlagSetToFalse () {
134
150
beanFactory .registerBeanDefinition ("config" , new RootBeanDefinition (NonEnhancedSingletonBeanConfig .class ));
@@ -181,7 +197,7 @@ void enhancementIsNotPresentForStaticMethodsUsingAsm() {
181
197
assertThat (bar .foo ).isNotSameAs (foo );
182
198
}
183
199
184
- @ Test
200
+ @ Test // gh-34486
185
201
void enhancementIsNotPresentWithEmptyConfig () {
186
202
beanFactory .registerBeanDefinition ("config" , new RootBeanDefinition (EmptyConfig .class ));
187
203
ConfigurationClassPostProcessor pp = new ConfigurationClassPostProcessor ();
@@ -1195,6 +1211,12 @@ public static Bar bar() {
1195
1211
}
1196
1212
}
1197
1213
1214
+ @ Configuration
1215
+ @ Import (SingletonBeanConfig .class )
1216
+ abstract static class AbstractConfigWithoutBeanMethods {
1217
+ // This class intentionally does NOT declare @Bean methods.
1218
+ }
1219
+
1198
1220
@ Configuration
1199
1221
static final class EmptyConfig {
1200
1222
}
0 commit comments