Spring AOP作为提高系统的功能性起到了至关重要的作用,大大的方便了开发人员在不改变原有代码的基础上,为系统增加新的功能,AOP的术语叫织入,就像是龙袍中的金线、银线!而SpringAOP在功能的是线上有两种机制,一种是基于Jdk自带的动态代理实现;另一种是基于Cglib的动态代理实现,具体用哪一种是在applicationContext.xml中有指定,默认是使用Jdk的!
<aop:aspectj-autoproxy proxy-target-class="true"></aop:aspectj-autoproxy>
当在使用Spring AOP过程中,遇到ClassCastException时,可以设置为Cglib动态代理机制,因为Cglib的实现方式是通过字节码编程,来为父类(真实对象)实现一个子类,作为其的代理类,根据Java多态的特性,是可以将代理类引用赋予父类的!
下面分别说下两个代理类的应用代码,可以进行对比
整个项目的代码结构: