在 Java 中,“Proxy 代理”通常指 两种常见场景:
下面分别说明配置方式。
用于 对接口进行代理,常见在 AOP、RPC、日志、事务中。
public interface UserService {
void save();
}
public class UserServiceImpl implements UserService {
public void save() {
System.out.println("保存用户");
}
}
import java.lang.reflect.*;
public class ProxyHandler implements InvocationHandler {
private Object target;
public ProxyHandler(Object target) {
this.target = target;
}
@Override
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
System.out.println("前置逻辑");
Object result = method.invoke(target, args);
System.out.println("后置逻辑");
return result;
}
}
UserService service = new UserServiceImpl();
UserService proxy = (UserService) Proxy.newProxyInstance(
service.getClass().getClassLoader(),
new Class[]{UserService.class},
new ProxyHandler(service)
);
proxy.save();
✅ 注意:
java -Dhttp.proxyHost=127.0.0.1 \
-Dhttp.proxyPort=8080 \
-Dhttps.proxyHost=127.0.0.1 \
-Dhttps.proxyPort=8080 \
-Dhttp.nonProxyHosts="localhost|127.0.0.1" \
MyApp
System.setProperty("http.proxyHost", "127.0.0.1");
System.setProperty("http.proxyPort", "8080");
System.setProperty("https.proxyHost", "127.0.0.1");
System.setProperty("https.proxyPort", "8080");
System.setProperty("socksProxyHost", "127.0.0.1");
System.setProperty("socksProxyPort", "1080");
Proxy proxy = new Proxy(
Proxy.Type.HTTP,
new InetSocketAddress("127.0.0.1", 8080)
);
OkHttpClient client = new OkHttpClient.Builder()
.proxy(proxy)
.build();
Spring 默认:
spring.aop.proxy-target-class=true # 使用 CGLIB
| 场景 | 配置方式 |
|---|---|
| 方法增强 / AOP | Proxy.newProxyInstance |
| 网络访问代理 | JVM 参数 / System.setProperty |
| HTTP 客户端 | OkHttp / HttpClient Proxy |
如果你是指 某一具体框架(Spring / MyBatis / RPC) 或 某种代理类型,可以告诉我,我给你更精确的配置示例。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。