Spring AOP的两种代理(2)

/**
    * 在代理实例上处理方法调用并返回结果
    * @param object : 代理类
    * @param method :被代理的方法
    * @param args :该方法的参数数组
    * @param methodProxy
    */
    @Override
    public Object intercept(Object object, Method method, Object[] args,
            MethodProxy methodproxy) throws Throwable {       
        Object result = null;   
        try {
              System. out .println( "前置处理开始 ..." );
              result = methodproxy.invoke( targetObject , args);//执行目标对象的方法
              System. out .println( "后置处理开始  ..." );
          } catch (Exception e) {
              System. out .println( " 异常处理 ..." );
          } finally {
              System. out .println( " 调用结束 ..." );
          }
          return result;
      } 
  }
测试类:

public class TestCGLIBProxy {

public static void main(String[] args) {
       
          //我们要代理的真实对象
          TestCGLIBServiceImpl testCGLIB = new TestCGLIBServiceImpl();
          CGLIBProxy CGLIBproxy = new CGLIBProxy();
          TestCGLIBServiceImpl testCGLIBProxy = (TestCGLIBServiceImpl) CGLIBproxy.createProxyInstance(testCGLIB);
          testCGLIBProxy.add();
      }
  }

结果图:

Spring AOP的两种代理

写在后面:spring AOP的两种代理实现代码就写到这,这里只是实现了,如果你要想真正明白,还得熟悉其中原理机制,比如反射机制,newProxyInstance(...),Enhancer()原理,invoke()原理等等。

下一篇将要记录spring AOP的基于注解的具体实现(见 ),而对于XML的我姑且不是用了,因为不够灵活,不够强大,要是有时间还会介绍下spring AOP 自定义注解的实现。

Spring AOP进行日志记录 

使用Spring AOP进行性能监控 

利用Spring AOP 更新Memcached 缓存策略的实现 

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/d839342a3d27d9c935c71fc1a5421d33.html