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文件中设置代理。