spring 中 BeanPostProcessor 的实际用途是什么?

What is the real world use of BeanPostProcessor in spring?

我知道 bean post 处理器并且它正在工作,但我不确定它将如何帮助我们进行实际应用。在实际应用中下面的 define 方法中应该有什么?

1 Some configuration Code?
2 Some validation code for bean ?




 public class MyBeanInitProcessor implements BeanPostProcessor{
     
        @Override
        public Object postProcessAfterInitialization(Object bean, String beanName)
                throws BeansException {
            System.out.println("before initialization: "+beanName);
            return bean;
        }
     
        @Override
        public Object postProcessBeforeInitialization(Object bean, String beanName)
                throws BeansException {
            System.out.println("after initialization: "+beanName);
            return bean;
        }
    }

在大多数现实世界的应用程序中,您不会直接与它们交互。 Spring provides 28 implementations out of the box 处理自动装配和应用 AOP 建议等标准功能。您可以通过使用标准 Spring 功能间接使用它们,例如在方法参数上应用验证注释,这适用 MethodValidationPostProcessor,或者进行方法调用 @Async,这适用 AsyncAnnotationBeanPostProcessor

BeanPostProcessor 是一种在每次初始化 bean 时 运行 一些代码的方法。

  • 假设您有一个算法来处理未确定 数量的客户对象。
  • 假设每个 Customer 都是一个 bean,并且(正如您可能在 LinkedList 中发现的那样)每个 bean 都可以判断它后面是否有一个 bean。
  • 进一步说,您需要在初始化该列表中的最后一个 bean 时抛出一个事件。

如果您在 postProcessAfterInitialization() 中添加代码,就可以做到这一点。知道Spring,肯定有更好的办法。尽管如此,对我来说,BeanPostProcessor 可能会有所帮助。