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)); }