Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/401.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java SpringBoot:@代理设置值(System.setProperty)_Java_Proxy_Spring Boot_Truststore_System Properties - Fatal编程技术网

Java SpringBoot:@代理设置值(System.setProperty)

Java SpringBoot:@代理设置值(System.setProperty),java,proxy,spring-boot,truststore,system-properties,Java,Proxy,Spring Boot,Truststore,System Properties,我的application.yml配置如下所示: proxy: host: myProxyDNS port: 8080 trustedStore: filename: keystore.jks type: JKS password: MY_PASSWORD_FOR_THE_KEYSTORE 如何管理所有代理内容的类如下所示: @Configuration public class ProxyConfigurator { @Value("${proxy.ho

我的
application.yml
配置如下所示:

proxy:
  host: myProxyDNS
  port: 8080
  trustedStore:
    filename: keystore.jks
    type: JKS
    password: MY_PASSWORD_FOR_THE_KEYSTORE
如何管理所有代理内容的类如下所示:

@Configuration
public class ProxyConfigurator {

@Value("${proxy.host}")
private String proxyHost;

@Value("${proxy.port}")
private String proxyPort;

@Value("${proxy.trustedStore.filename}")
private String trustedStoreFilename;

@Value("${proxy.trustedStore.type}")
private String trustedStoreType;

@Value("${proxy.trustedStore.password}")
private String trustedStorePassword;

public void setProxy() {
  System.setProperty("https.proxyHost", proxyHost);
  System.setProperty("https.proxyPort", proxyPort);

  System.setProperty("javax.net.ssl.trustStoreType", getPathForFile(trustedStoreFilename));
  // and so on ...
}
在由
SpringApplication.run()
调用的我的“Main”类中,如下所示:

@Autowired
private ProxyConfigurator proxyConfigurator;

@Override
public void run(String... args) throws Exception {
   proxyConfigurator.setProxy();
   // Call another autowired (third-party class) to make an HTTP call
}
这工作正常(所有属性都已设置)。但是在我的“main”类中,我还有一些其他的自动连接类(第三方),我用它们来进行HTTP调用。现在的问题是,这个第三方类忽略了初始化后设置的所有系统属性

我在SO上找到了一些帖子,其中代理设置是由参数设置的(
-D
),但我认为这不是我的解决方案

当然我可以使用第二个
SpringApplication.run
:第一个设置代理,第二个运行我的应用。但这感觉很糟糕

有人有好的建议吗


谢谢

第三方http要求是否与代理相同?我不明白你真正的问题。请更具体地说明这个问题。第三方组件进行http调用。因为它们不提供设置代理的api,所以唯一的方法是将代理设置为系统属性。如果我在我的SpringBoot应用程序类中设置了代理,这将非常有效。但我想使用@Value注释,以便可以在yml文件中设置代理。