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 可能会有所帮助。
我知道 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 可能会有所帮助。