基于接口的动态代理示例代码

动态 未结 0 57
小小草
小小草 LV1 2023年9月23日 23:40 发表
好的,下面是基于接口的动态代理示例代码: ```java import java.lang.reflect.InvocationHandler; import java.lang.reflect.Method; import java.lang.reflect.Proxy; public interface UserService { void addUser(String username, String password); } public class UserServiceImpl implements UserService { @Override public void addUser(String username, String password) { System.out.println("添加用户:" + username + ", 密码:" + password); } } public class UserServiceProxy implements InvocationHandler { private Object target; public UserServiceProxy(Object target) { this.target = target; } @Override public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { System.out.println("开始执行方法:" + method.getName()); Object result = method.invoke(target, args); System.out.println("方法执行完成:" + method.getName()); return result; } } public class Main { public static void main(String[] args) { UserService userService = new UserServiceImpl(); UserService proxy = (UserService) Proxy.newProxyInstance(userService.getClass().getClassLoader(), userService.getClass().getInterfaces(), new UserServiceProxy(userService)); proxy.addUser("admin", "123456"); } } ``` 在上面的示例中,我们定义了一个UserService接口和它的实现类UserServiceImpl。然后,我们创建了一个UserServiceProxy类来实现InvocationHandler接口,并在其中添加了额外的逻辑,如打印日志等。最后,我们使用Proxy.newProxyInstance()方法来创建代理对象,并将代理对象转换为UserService类型,从而实现了对UserService接口的动态代理。
收藏(0)  分享
相关标签: 智能问答
问题没解决?让AI助手帮你作答 AI助手
0个回复
  • 消灭零回复