Spring中应用java动态代码实现Aop

来源:互联网 发布:软件使用统计表 编辑:程序博客网 时间:2024/05/13 20:09

用三个类来举例说明java动态代码实现方法

Spring的做法,基于接口的用proxy

普通接口类

package com.jamesby.proxy;   public interface CarCompany {         public void makeCar();        public void abc();   } 


实现接口类

package com.jamesby.proxy;    public class CarCompanyImpl implements CarCompany {       public void makeCar() {           System.out.println("Company A make a car!");           abc();       }       public void abc()       {           System.out.println("abc is invoked!");       }   }


动态代理句柄

package com.jamesby.proxy;import java.lang.reflect.InvocationHandler;import java.lang.reflect.Method;public class CarCompanyHandler implements InvocationHandler {CarCompany com;public CarCompanyHandler(CarCompany com) {this.com = com;}public Object invoke(Object proxy, Method method, Object[] args)throws Throwable {System.out.println("time1:" + System.currentTimeMillis());method.invoke(this.com, new Object[]{});System.out.println("time2:" + System.currentTimeMillis());return null;}}


测试类

package com.jamesby.proxy;     import java.lang.reflect.Proxy;     public class Test {       public static void main(String[] arg) {           CarCompanyImpl a = new CarCompanyImpl();           CarCompanyHandler handler = new CarCompanyHandler(a);           // 产生一个新的代理类           CarCompany com = (CarCompany) Proxy.newProxyInstance(Test.class                  .getClassLoader(), new Class[] { CarCompany.class }, handler);           com.makeCar();     }   }


此时就可以实现代码

原创粉丝点击