Spring---代理对象创建


/**
     * 代理对象的创建,通过BeanPostProcessor实现
     *
     *  AbstractAutowireCapableBeanFactory#initializeBean{
     *     wrappedBean = applyBeanPostProcessorsAfterInitialization(wrappedBean, beanName);
     *  }
     *
     *  ->
     *  AbstractAutowireCapableBeanFactory#applyBeanPostProcessorsAfterInitialization
     *
     *  ->
     *  AbstractAdvisingBeanPostProcessor#postProcessAfterInitialization
     *
     *
     *  eg:
     *      1、@Async
     *          org.springframework.scheduling.annotation.AsyncAnnotationBeanPostProcessor
     *
     *          private, default, protected, public 都可以生成代理对象
     *
     *      2、@Transactional
     *          org.springframework.aop.framework.autoproxy.InfrastructureAdvisorAutoProxyCreator
     *
     *          仅 public 可生成代理对象
     */