SpringBoot:代理设置的@Value(System.setProperty)

时间:2016-07-14 16:19:23

标签: 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.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 ...
}

在我的" Main"由SpringApplication.run()调用的类看起来像这样:

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

这很好用(所有属性都已设置)。但是在我的"主要" class我还有一些其他自动化的类(第三方),我曾经用它来进行HTTP调用。问题是,这个第三方类忽略了初始化后设置的所有系统属性。

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

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

有人提出好的建议吗?

谢谢!

0 个答案:

没有答案