BeanPostProcessor не вызывается для методов @Bean с помощью Spring Java Config

1

Я пытаюсь добавить BeanPostProcessor в моей Spring Java Config. Кажется, что он работает, но только для bean-компонентов, созданных с помощью сканирования компонентов (@Configuration, @RestController,..)

Бобы, которые я создаю в моей конфигурации Java, не являются.

Например

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


  @Bean
  public static MyBPP myBeanPostProcessor()
  {
    return new MyBPP();
  }
}

Заметьте, что я объявлял метод BeanPostProcessor статическим (см. Http://forum.spring.io/forum/spring-projects/container/123899-beanpostprocessor-with-bean-annotation-not-working).

Таким образом создается экземпляр MyBean, но BeanPostProcessor никогда не обрабатывает его.

Теги:
spring-boot
spring
spring-java-config

1 ответ

2
Лучший ответ

попробуйте мой тест, это сработало для меня

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);
    }
}
  • 0
    А если вы добавите свой println в postProcessAfterInitialization ?
  • 0
    пробовал, оба работают
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню