Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/343.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java BeanPostProcessor在春季的实际用途是什么?_Java_Spring_Dependency Injection_Ioc Container - Fatal编程技术网

Java BeanPostProcessor在春季的实际用途是什么?

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

我知道bean后处理器及其工作原理,但我不确定它在实际应用中对我们有何帮助。在实际应用中,下面的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;
        }
    }

在大多数实际应用程序中,您不会直接与它们交互。处理标准功能,如自动布线和应用AOP建议。您可以通过使用标准Spring功能间接地使用它们,例如对方法参数应用验证注释(应用
MethodValidationPostProcessor
),或进行方法调用
@Async
,它适用于
异步注释BeanPostProcessor

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

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

如果您在postProcessAfterInitialization()中添加代码,就可以这样做。了解春天,无疑有更好的方法。不过,对我来说,BeanPostProcessor可能会有所帮助。

你有没有编写过自己的后处理器的场景?@Monica没有。它是核心基础设施的一部分,除了已经包含的那些,我从来都不需要任何东西。我所做的是编写各种规则,例如AOP拦截器或验证,这些规则由现有处理器应用。但是,您如何找到它是否在列表中&它是列表中的最后一个条目?