【发布时间】:2012-12-24 09:20:04
【问题描述】:
我正在尝试创建一个 BeanPostProcessor 来将一些值注册到 Map。
如果我通过 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/>
如果我使用上述配置,应用程序就会挂起。但是,如果我使用下面给出的基于 xml 的配置,它就可以正常工作。
<bean class="xyz.bean.InstantiationTracingBeanPostProcessor"/>
我在这里做错了什么?
【问题讨论】:
-
我可以看看你的主要方法吗?
-
@harish.raj 这是一个网络应用程序
-
您使用哪个 Spring 版本?
-
能否请您显示您在配置类中加载 bean 定义的配置
-
@BijuKunjummen 配置类在组件扫描路径中
标签: spring spring-ioc