未使用SpringJava配置为@Bean方法调用BeanPostProcessor
我试图在SpringJava配置中添加BeanPostProcessor。它似乎在工作,但仅适用于通过组件扫描(@Configuration、@RestController、…)创建的bean 我在Java配置中创建的bean不是 例如 注意,我确实将BeanPostProcessor的方法声明为static(请参阅)未使用SpringJava配置为@Bean方法调用BeanPostProcessor,java,spring,spring-boot,spring-java-config,Java,Spring,Spring Boot,Spring Java Config,我试图在SpringJava配置中添加BeanPostProcessor。它似乎在工作,但仅适用于通过组件扫描(@Configuration、@RestController、…)创建的bean 我在Java配置中创建的bean不是 例如 注意,我确实将BeanPostProcessor的方法声明为static(请参阅) 因此创建了MyBean的一个实例,但BeanPostProcessor从不处理它。试试我的测试,它对我有效 class MyBPP implements BeanPostProc
因此创建了MyBean的一个实例,但BeanPostProcessor从不处理它。试试我的测试,它对我有效
class MyBPP implements BeanPostProcessor {
@Override
public Object postProcessBeforeInitialization(Object bean, String beanName) {
System.out.println(bean);
return bean;
}
@Override
public Object postProcessAfterInitialization(Object bean, String beanName) {
return bean;
}
}
@Configuration
public class MyConfiguration {
@Bean
public MyBean myBean() {
return new MyBean();
}
@Bean
public MyBPP myBeanPostProcessor() {
return new MyBPP();
}
public static void main(String[] args) {
new AnnotationConfigApplicationContext(MyConfiguration.class);
}
}
如果您在
后处理程序afterInitialization
中添加println,它对我不起作用,因为BeanPostProcessor有一个自动连接的bean,它也是后处理程序的目标。根据文件,这是行不通的。我必须打破这种循环依赖,我必须让它工作。对于“文档”,我的意思更具体地说是“BeanPostProcessors和AOP自动代理”
class MyBPP implements BeanPostProcessor {
@Override
public Object postProcessBeforeInitialization(Object bean, String beanName) {
System.out.println(bean);
return bean;
}
@Override
public Object postProcessAfterInitialization(Object bean, String beanName) {
return bean;
}
}
@Configuration
public class MyConfiguration {
@Bean
public MyBean myBean() {
return new MyBean();
}
@Bean
public MyBPP myBeanPostProcessor() {
return new MyBPP();
}
public static void main(String[] args) {
new AnnotationConfigApplicationContext(MyConfiguration.class);
}
}