java Proxy 解析---spring aop
1.接口
public interface IAccountService {
int getInt(int i);
int getInt2(int i);
}
2.实现
public class AccountServiceImpl implements IAccountService {
public int getInt(int i) {
return i;
}
public int getInt2(int i) {
return i;
}
}
3.代理类
package com.jd.xq.proxy;
import com.jd.xq.service.IAccountService;
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
/** * @author duanxiaoqiu * @Date 2020-01-07 16:21 **/
public class AccountAdvice implements InvocationHandler {
private IAccountService iAccountService;
public AccountAdvice(IAccountService iAccountService) {
this.iAccountService = iAccountService;
}
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
if (method.getName().equals("getInt")) {
return 100;
}
return method.invoke(iAccountService, args);
}
}
4.应用
public static void main(String[] args) {
//创建目标对象
IAccountService target = new AccountServiceImpl();
//创建代理对象
IAccountService proxy = (IAccountService) Proxy.newProxyInstance(target.getClass().getClassLoader(),
target.getClass().getInterfaces(),
new AccountAdvice(target)
);
System.out.println(proxy.getInt(1));
System.out.println(proxy.getInt2(1));
}
还没有评论,来说两句吧...