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

用三个类来举例说明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(); 
    }   
}


此时就可以实现代码

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值