**(1)创建接口,定义方法。
(2)创建接口实现类,实现方法。
(3)使用Proxy类创建接口代理对象。**
UserDao接口:
package com.Keafmd.spring5; /** • Keafmd • • @ClassName: UserDao • @Description: • @author: 牛哄哄的柯南 • @date: 2021-01-17 20:41 */ public interface UserDao { public int add(int a,int b); public String updat(String id); }
UserDaoImpl实现类:
package com.Keafmd.spring5; /** • Keafmd • • @ClassName: UserDaoImpl • @Description: 实现类 • @author: 牛哄哄的柯南 • @date: 2021-01-17 20:42 */ public class UserDaoImpl implements UserDao{ @Override public int add(int a, int b) { System.out.println(“add执行中…”); return a+b; } @Override public String updat(String id) { System.out.println(“updat执行中…”); return id; } }
JDKProxy类:
package com.Keafmd.spring5; import java.lang.reflect.InvocationHandler; import java.lang.reflect.Method; import java.lang.reflect.Proxy; /** • Keafmd • • @ClassName: JDKProxy • @Description: • @author: 牛哄哄的柯南 • @date: 2021-01-17 20:44 */ public class JDKProxy { public static void main(String[] args) { //创建接口实现类代理对象 Class[] interfaces = {UserDao.class}; /*Proxy.newProxyInstance(JDKProxy.class.getClassLoader(), interfaces, new InvocationHandler() { @Override public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { return null; } });*/ UserDaoImpl userDao = new UserDaoImpl(); UserDao dao = (UserDao) Proxy.newProxyInstance(JDKProxy.class.getClassLoader(), interfaces, new UserDaoProxy(userDao)); System.out.println(“-----------对add方法进行增强----------”); int result = dao.add(1, 2);