Java BeanPostProcessor在春季的实际用途是什么?
我知道bean后处理器及其工作原理,但我不确定它在实际应用中对我们有何帮助。在实际应用中,下面的define方法应该包含什么Java BeanPostProcessor在春季的实际用途是什么?,java,spring,dependency-injection,ioc-container,Java,Spring,Dependency Injection,Ioc Container,我知道bean后处理器及其工作原理,但我不确定它在实际应用中对我们有何帮助。在实际应用中,下面的define方法应该包含什么 1 Some configuration Code? 2 Some validation code for bean ? public class MyBeanInitProcessor implements BeanPostProcessor{ @Override public Object postProcessA
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;
}
}
在大多数实际应用程序中,您不会直接与它们交互。处理标准功能,如自动布线和应用AOP建议。您可以通过使用标准Spring功能间接地使用它们,例如对方法参数应用验证注释(应用
MethodValidationPostProcessor
),或进行方法调用@Async
,它适用于异步注释BeanPostProcessor
BeanPostProcessor是每次初始化bean时运行一段代码的一种方法
- 假设您有一个算法来处理数量不确定的客户对象李>
- 假设每个客户都是一个bean,并且(正如您在LinkedList中所发现的那样),每个bean都可以判断是否有一个bean跟随它李>
- 进一步说,当列表中的最后一个bean初始化时,需要抛出一个事件李>
如果您在postProcessAfterInitialization()中添加代码,就可以这样做。了解春天,无疑有更好的方法。不过,对我来说,BeanPostProcessor可能会有所帮助。你有没有编写过自己的后处理器的场景?@Monica没有。它是核心基础设施的一部分,除了已经包含的那些,我从来都不需要任何东西。我所做的是编写各种规则,例如AOP拦截器或验证,这些规则由现有处理器应用。但是,您如何找到它是否在列表中&它是列表中的最后一个条目?