我的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
:第一个设置代理,第二个运行我的应用程序。但这感觉很糟糕。
有人提出好的建议吗?
谢谢!