Spring AOP中,有个选项如下:
<tx:annotation-driven transaction-manager="transactionManager" proxy-target-class="true"/>
注意:proxy-target-class属性值决定是基于接口的还是基于类的代理被创建。
如果proxy-target-class 属性值被设置为true,那么基于类的代理将起作用(这时需要cglib库)。
如果proxy-target-class属值被设置为false或者这个属性被省略,那么标准的JDK 基于接口的代理。
如果不给出 proxy-target-class,就按 proxy-target-class=“false”对待,也即是按JDK proxy来处理的。
调用getClass() API,就会得到如下的结果:
For JDK proxy, output is: com.sun.proxy.$Proxy12
for CGlib proxy,output is: class salesdepart.service.app.SalesDepartEmployee$$EnhancerBySpring CGLIB $ $ 397e3c56