Affects: 6.1.11
BeanDefinitions created from static bean method contains invalid attribute BeanClassName (if refers to configuration class instead of bean class).
Reproduce:
- create a configuration class with static bean:
@Configuration
public class ThisIsConfigClass {
public static class ThisIsBeanClass {
}
// static definition
@Bean
public static ThisIsBeanClass thisIsBean() {
return new ThisIsBeanClass();
}
}
- add listener class to check an application context:
@Component
public class LoggingListener {
@Autowired
GenericApplicationContext applicationContext;
@EventListener(classes = ApplicationReadyEvent.class)
void onApplicationReady() {
var beanDefinition = applicationContext.getBeanDefinition("thisIsBean");
System.out.println("getFactoryBeanName: " + beanDefinition.getFactoryBeanName());
System.out.println("getBeanClassName: " + beanDefinition.getBeanClassName());
}
}
- expected output (for static bean definition):
getFactoryBeanName: null
getBeanClassName: com.example.ThisIsConfigClass$ThisIsBeanClass
- actual:
getFactoryBeanName: null
getBeanClassName: com.example.ThisIsConfigClass
Comment From: snicoll
This is the expected behavior, please review the Javadoc of getBeanClass.