春天BeanBostProcessor的真实用途是什么?

时间:2016-08-26 10:25:07

标签: java spring dependency-injection ioc-container

我知道bean后处理器它正在工作,但我不确定它将如何帮助我们在现实世界的应用程序。在实际应用中,下面的定义方法应该是什么呢?

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

public class MyBeanInitProcessor实现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;
    }
}

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:0)

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

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

如果您在postProcessAfterInitialization()中添加了代码,则可以这样做。知道春天,有更好的方法,毫无疑问。不过,对我而言,这将是BeanPostProcessor可能有用的情况。