java aop详解

项目中常用的aop技术一般要么 使用java原生aop,要么使用cglib框架,

jdk aop 需要代理类集成一个InvocationHandler接口才能实现对目标类的代理


public class AopTest implements InvocationHandler , TargetOperate{
	AopTest op;
	public AopTest() {}
	public AopTest(AopTest op) {
		this.op = op;
	}
	
	public static void main(String[] args) {
		AopTest t= new AopTest();
		TargetOperate p = (TargetOperate) (Proxy.newProxyInstance(ClassLoader.getSystemClassLoader(), 
				t.getClass().getInterfaces(),
				new AopTest(t)));
		p.execute("ett");
	}

	/**
	    * proxy:代理类代理的真实代理对象com.sun.proxy.$Proxy0
	    * method:我们所要调用某个对象真实的方法的Method对象
	    * args:指代代理对象方法传递的参数
	    */
	@Override
	public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
		System.out.println("before execute");
		op.execute(args[0].toString());
		System.out.println("after execute");
		return null;
	}

	@Override
	public void execute(String name) {
		System.out.println(name);
	}
}

由此实现了对目标对象的代理,在此需要注意的是目标对象要实现一个接口,Proxy返回的要是不能是目标对象本身,上面的变量p如果换成AopTest修饰则会运行异常

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值