Description
Les Hazlewood opened SPR-14603 and commented
Consider the following configuration class:
import org.springframework.beans.factory.support.BeanDefinitionRegistryPostProcessor;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class MyConfiguration {
@Bean
public static BeanDefinitionRegistryPostProcessor myPostProcessor() {
return new MyBeanDefinitionPostProcessor();
}
}
(if it matters, this class is loaded in Spring MVC and Spring Boot applications via an @Import(MyConfiguration.class)
annotation.)
This causes a WARN message to be printed as follows:
Cannot enhance @Configuration bean definition 'myPostProcessor' since its singleton instance has been created too early. The typical cause is a non-static @Bean method with a BeanDefinitionRegistryPostProcessor return type: Consider declaring such methods as 'static'.
As you can see, the method is declared as static, yet I still receive the WARN message. When I remove the static
modifier, I still receive the same WARN message. Something is amiss.
This is a problem for us because we use this code in a Spring library as well as a Spring Boot starter/plugin that we distribute to customers - when they see the WARN message, they think something is wrong, even though everything is working as expected.
Issue Links:
- Allow BeanDefinitionRegistryPostProcessor to register other BeanDefinitionRegistryPostProcessors [SPR-10630] #15258 Allow BeanDefinitionRegistryPostProcessor to register other BeanDefinitionRegistryPostProcessors