Spring 带有@Bean注释的BeanPostProcessor不工作
我正在尝试创建一个Spring 带有@Bean注释的BeanPostProcessor不工作,spring,spring-ioc,Spring,Spring Ioc,我正在尝试创建一个BeanPostProcessor,用于向映射注册一些值 如果我通过xml定义创建bean实例,BeanPostProcessor可以正常工作,但是如果我将bean定义更改为@Configuration,它就不能工作 后处理器 public class InstantiationTracingBeanPostProcessor implements BeanPostProcessor { public Object postProcessBeforeInitializat
BeanPostProcessor
,用于向映射注册一些值
如果我通过xml定义创建bean实例,BeanPostProcessor
可以正常工作,但是如果我将bean定义更改为@Configuration
,它就不能工作
后处理器
public class InstantiationTracingBeanPostProcessor implements BeanPostProcessor {
public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException {
return bean;
}
public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {
System.out.println("Bean '" + beanName );
return bean;
}
}
Bean配置
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.context.annotation.Bean;
@org.springframework.context.annotation.Configuration
public class Configuration {
@Bean
public @Qualifier("InstantiationTracingBeanPostProcessor")
InstantiationTracingBeanPostProcessor activitiConfigurationBeanPostProcessor() {
return new InstantiationTracingBeanPostProcessor();
}
}
<context:component-scan base-package="xyz.config"/>
<context:annotation-config/>
组件扫描配置
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.context.annotation.Bean;
@org.springframework.context.annotation.Configuration
public class Configuration {
@Bean
public @Qualifier("InstantiationTracingBeanPostProcessor")
InstantiationTracingBeanPostProcessor activitiConfigurationBeanPostProcessor() {
return new InstantiationTracingBeanPostProcessor();
}
}
<context:component-scan base-package="xyz.config"/>
<context:annotation-config/>
如果使用上述配置,应用程序将挂起。但如果我使用下面给出的基于xml的配置,它就可以正常工作
<bean class="xyz.bean.InstantiationTracingBeanPostProcessor"/>
我做错了什么?我认为这样做的方法是用
组件注释BeanPostProcessor
:
@Component
public class InstantiationTracingBeanPostProcessor implements BeanPostProcessor {
//...
}
这将由Spring在组件扫描期间自动处理(因此无需向配置中添加带注释的方法)。在中询问另一个问题后,我得到了一个解决方案
bean factory方法应该被定义为一个静态方法来工作。我能看看你的主要方法吗?@harish.raj这是一个web应用程序,你使用哪个Spring版本?你能在配置中显示加载bean定义的配置吗class@BijuKunjummen配置类位于组件中扫描路径