zoukankan      html  css  js  c++  java
  • Spring后置处理器(PostProcessor)

    1.BeanPostProcessor

    
    
    /**
    * BeanPostProcessor为我们提供了两个方法,我们可以在Spring实例化Bean的前后实现我们的特定需求。
    * (Spring AOP就是根据BeanPostProcessor建立与IOC的联系)
    */
    public interface BeanPostProcessor {
    
        @Nullable
        default Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException {
            return bean;
        }
    
        @Nullable
        default Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {
            return bean;
        }
    
    }
    我们都知道,实现ApplicationContextAware接口,Spirng初始化Bean时会调用setApplicationContext方法,帮助我们注入ApplicationContext对象。其实这个功能就是利用BeanPostProcessor实现的,具体可以看源码参考Spirng的 ApplicationContextAwareProcessor这个类

    2.BeanFactoryPostProcessor

    /** 
    * 实现该接口,可以在Spring的Bean创建之前修改Bean定义的属性。
    */

    @FunctionalInterface
    public interface BeanFactoryPostProcessor {
    
        void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory) throws BeansException;
    
    }

    简单的说就是Spring提供了一个接口,这个接口可以让我们修改Spring内部的BeanFactory。(在这之前要请先了解什么是BeanFactory,并了解FactoryBean和BeanFactory的区别。

    可参考:https://www.cnblogs.com/MichaelPL/p/11631808.html

    BeanDefinitionRegistryPostProcessor
    DestructionAwareBeanPostProcessor
    InstantiationAwareBeanPostProcessor
    MergedBeanDefinitionPostProcessor
    RequiredAnnotationBeanPostProcessor

  • 相关阅读:
    poj 3258
    CodeForces 367E Sereja and Intervals
    Codeforces Round #240 (Div. 2) C Mashmokh and Numbers
    Codeforces Round #240 (Div. 2) D
    zoj 3768 Continuous Login
    2014/4/4做题感悟
    HDU 1878 欧拉回路
    HDU 3018 Ant Trip
    POJ 3694 Network
    Codeforces Round #239 (Div. 2)
  • 原文地址:https://www.cnblogs.com/MichaelPL/p/11631034.html
Copyright © 2011-2022 走看看