移:AOP技术原理

AOP技术原理

AOP在JDK1.3开始被支持,体现在java.lang.reflect.InvocationHandler和Proxy类。对于InvocationHandler的子类,都会被执行invoke方法代替原先的方法。

例如有一个类Service,我们需要在Service的所有方法前加上事务管理代码,那么需要定义一个ServiceProxy继承自InvocationHandler,它包含实例Service。代码如下

public class ServiceProxy implements InvocationHandler{

 private Service _service;

 private Class interfaceType;

 

 private ServiceProxy(Service service, Class intf) {

   service = service;

   interfaceType = intf;

 }

  public static Object newInstance(Class intf, Service service) {

    return Proxy.newProxyInstance(service.getClass().getClassLoader(),new Class[]{intf},new ServiceProxy(service, intf)

  );

 }

  public getService

  public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {

    //加上事务管理代码,然后执行此方法

  }

}

还需要一个Bean工厂获得代理的Service

Service service = (Service) ServiceProxy.newInstance(Service.class, new GenericService();

这样,调用Service类之前做任何事情都会被加上事务管理代码

    原文作者:AOP
    原文地址: https://blog.csdn.net/kentchenj/article/details/1218000
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞