Spring学习总结(二)——静态代理、JDK与CGLIB动态代理、AOP+IoC目录一、为什么需要代理模式二、静态代理三、动态代理,使用JDK内置的Proxy实现四、动态代理,使用cglib实现五、使用Spring实现AOP六、使用IOC配置的方式实现AOP七、使用XML配置SpringAOP切面八、示例下载一、为什么需要代理模式假设需实现一个计算的类Math、完成加、减、乘、除功能,如下所示:1packagecom.zhangguo.Spring041.aop01;23publicclassMath{4//加5publicintadd(intn1,intn2){6intresult=n1+n2;7System.out.println(n1+"+"+n2+"="+result);8returnresult;9}101112//减13publicintsub(intn1,intn2){14intresult=n1-n2;15System.out.println(n1+"-"+n2+"="+result);16returnresult;17}1819//乘20publicintmut(intn1,intn2){21intresult=n1*n2;22System.out.println(n1+"X"+n2+"="+result);23returnresult;24}2526//除27publicintdiv(intn1,intn2){28intresult=n1/n2;29System.out.println(n1+"/"+n2+"="+result);30returnresult;31}32}现在需求发生了变化,要求项目中所有的类在执行方法时输出执行耗时。最直接的办法是修改源代码,如下所示:1packagecom.zhangguo.Spring041.aop01;23importjava.util.Random;45publicclassMath{6//加7publicintadd(intn1,intn2){8//开始时间9longstart=System.currentTimeMillis();10lazy();11intresult=n1+n2;12System.out.println(n1+"+"+n2+"="+result);13Longspan=System.currentTimeMillis()-start;14System.out.println("共用时:"+span);15returnresult;16}1718//减19publicintsub(intn1,intn2){20//开始时间21longstart=System.currentTimeMillis();22lazy();23intresult=n1-n2;24System.out.println(n1+"-"+n2+"="+result);25Longspan=System.currentTimeMillis()-start;26System.out.println("共用时:"+span);27returnresult;28}2930//乘31publicintmut(intn1,intn2){32//开始时间33longstart=System.currentTimeMillis();34lazy();35intresult=n1*n2;36System.out.println(n1+"X"+n2+"="+result);37Longspan=System.currentTimeMillis()-start;38System.out.println("共用时:"+span);39returnresult;40}4142//除43publicintdiv(intn1,intn2){44//开始时间45longstart=System.currentTimeMillis();46lazy();47intresult=n1/n2;48System.out.println(n1+"/"+n2+"="+result);49Longspan=System.currentTimeMil...