BeanPostProcessor 未使用 Spring Java Config 调用 @Bean 方法

Wim*_*uwe 2 java spring spring-boot spring-java-config

我正在尝试在我的 Spring Java 配置中添加一个 BeanPostProcessor。它似乎有效但仅适用于通过组件扫描创建的 bean (@Configuration, @RestController, ..)

我在 Java 配置中创建的 Bean 不是。

例如

@Configuration
public class MyConfiguration
{
  @Bean
  public MyBean myBean()
  {
    return new MyBean();
  }


  @Bean
  public static MyBPP myBeanPostProcessor()
  {
    return new MyBPP();
  }
}
Run Code Online (Sandbox Code Playgroud)

请注意,我确实将 BeanPostProcessor 的方法声明为静态(参见http://forum.spring.io/forum/spring-projects/container/123899-beanpostprocessor-with-bean-annotation-not-working)。

因此创建了一个 MyBean 实例,但 BeanPostProcessor 永远不会处理它。

Evg*_*eev 6

试试我的测试,它对我有用

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);
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 它对我不起作用,因为 BeanPostProcessor 有一个自动装配的 bean,它也是后处理器的目标。根据文档,这行不通。我必须打破那种循环依赖才能让它发挥作用。 (2认同)