学习 Java 的 Proxy(代理),建议按「概念 → 分类 → 写法 → 原理 → 实战」循序渐进。下面给你一条清晰的学习路线。
代理 = 替原对象干活的中介
特点
示例
interface UserService {
void save();
}
class UserServiceImpl implements UserService {
public void save() {
System.out.println("保存用户");
}
}
class UserServiceProxy implements UserService {
private UserService target;
UserServiceProxy(UserService target) {
this.target = target;
}
public void save() {
System.out.println("before");
target.save();
System.out.println("after");
}
}
✅ 适合理解“代理是什么”
特点
java.lang.reflect.Proxy核心类
Proxy.newProxyInstance(...)InvocationHandler示例
UserService proxy = (UserService) Proxy.newProxyInstance(
target.getClass().getClassLoader(),
target.getClass().getInterfaces(),
(p, method, args) -> {
System.out.println("before");
Object result = method.invoke(target, args);
System.out.println("after");
return result;
}
);
✅ 必须掌握:
InvocationHandler 的作用特点
示例(简化)
Enhancer enhancer = new Enhancer();
enhancer.setSuperclass(UserService.class);
enhancer.setCallback((MethodInterceptor) (obj, method, args, proxy) -> {
System.out.println("before");
Object result = proxy.invokeSuper(obj, args);
System.out.println("after");
return result;
});
java.lang.reflect.Proxy如果你愿意,我可以:
你想从哪一块开始?
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。