温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

java Proxy代理怎么配置

发布时间:2026-10-31 08:18:16 来源:亿速云 阅读:91 作者:小樊 栏目:编程语言

在 Java 中,“Proxy 代理”通常指 两种常见场景:

  1. JDK 动态代理(AOP / 接口代理)
  2. 网络代理(HTTP / SOCKS,访问网络时走代理)

下面分别说明配置方式。


一、JDK 动态代理(java.lang.reflect.Proxy)

用于 对接口进行代理,常见在 AOP、RPC、日志、事务中。

1️⃣ 定义接口

public interface UserService {
    void save();
}

2️⃣ 实现类

public class UserServiceImpl implements UserService {
    public void save() {
        System.out.println("保存用户");
    }
}

3️⃣ 实现 InvocationHandler

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

4️⃣ 创建代理对象

UserService service = new UserServiceImpl();

UserService proxy = (UserService) Proxy.newProxyInstance(
        service.getClass().getClassLoader(),
        new Class[]{UserService.class},
        new ProxyHandler(service)
);

proxy.save();

✅ 注意:

  • 只能代理接口
  • 目标类必须实现接口

二、网络代理配置(HTTP / SOCKS)

方式 1:JVM 启动参数(最常用)

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

方式 2:代码配置

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

方式 3:SOCKS 代理

System.setProperty("socksProxyHost", "127.0.0.1");
System.setProperty("socksProxyPort", "1080");

三、OkHttp 中的 Proxy 配置(常用)

Proxy proxy = new Proxy(
        Proxy.Type.HTTP,
        new InetSocketAddress("127.0.0.1", 8080)
);

OkHttpClient client = new OkHttpClient.Builder()
        .proxy(proxy)
        .build();

四、Spring 中的代理(补充)

  • JDK 动态代理:代理接口
  • CGLIB:代理类(无需接口)

Spring 默认:

spring.aop.proxy-target-class=true  # 使用 CGLIB

总结

场景 配置方式
方法增强 / AOP Proxy.newProxyInstance
网络访问代理 JVM 参数 / System.setProperty
HTTP 客户端 OkHttp / HttpClient Proxy

如果你是指 某一具体框架(Spring / MyBatis / RPC) 或 某种代理类型,可以告诉我,我给你更精确的配置示例。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI
助
手