Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
未使用SpringJava配置为@Bean方法调用BeanPostProcessor_Java_Spring_Spring Boot_Spring Java Config - Fatal编程技术网

未使用SpringJava配置为@Bean方法调用BeanPostProcessor

未使用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

我试图在SpringJava配置中添加BeanPostProcessor。它似乎在工作,但仅适用于通过组件扫描(@Configuration、@RestController、…)创建的bean

我在Java配置中创建的bean不是

例如

注意,我确实将BeanPostProcessor的方法声明为static(请参阅)


因此创建了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);
    }
}