Spring定義了org.springframework.aop.framework.AopProxy接口,並提供了兩個final類型的實現類。
AopProxy類結構:

Cglib2AopProxy使用CGLib動態代理技術創建代理,而JdkDynamicAopProxy使用JDK動態代理技術創建代理。
如果ProxyFactory的setInterfaces(Class[] interfaces)方法指定目標接口進行代理,則ProxyFactory使用JdkDynamicAopProxy;如果是針對類的代理,則使用Cglib2AopProxy。此外,還可以通過ProxyFactory的setOptimize(true)方法讓ProxyFactory啟動優化代理方式,這樣,針對接口的代理也會使用Cglib2AopProxy。
ProxyFactory pf = new ProxyFactory();
pf.setInterfaces(target.getClass().getInterfaces()); //指定對接口進行代理
pf.setOptimize(true); //啟用優化,則ProxyFactory將使用Cglib2AopProxy代理,否則默認JDK代理
pf.setTarget(target);
pf.addAdvice(advice);