图1回顾一下前面提到的事务源码分析,执行到AbstractAutowireCapableBeanFactory.initializeBean()->applyBeanPostProcessorsAfterInitialization(wrappedBean,beanName)->AbstractAutoProxyCreator.postProcessAfterInitialization()->AbstractAutoProxyCreator.wrapIfNecessary()->AopFaultoryAopProxy)链来创建代理人;publicAopProxycreateAopProxy(AdvisedSupportconfig)throwsAopConfigException{if(config.isOptimize()||config.isProxyTargetClass()||hasNoUserSuppliedProxyInterfaces(config)){Class>targetClass=config.getTargetClass();if(targetClass==null){thrownewAopConfigException("TargetSource无法确定目标类:"+"创建代理需要接口或目标。");}//如果是接口if(targetClass.isInterface()||Proxy.isProxyClass(targetClass)){returnnewJdkDynamicAopProxy(配置);}//如果不是接口returnnewObjenesisCglibAopProxy(config);}else{returnnewJdkDynamicAopProxy(config);通过上述方法确定cglib或jdk动态代理;
