我使用Spring Boot在我的应用程序中启动嵌入式Tomcat。这个Tomcat-Server位于防火墙之后,对于所有与外界的连接,我需要使用具有身份验证的代理。
出于这个原因,我在使用main方法启动Spring Application之前配置了Authenticator。
使用固定的用户名/密码,一切正常,但我想从属性文件中读取这些内容,因此我尝试通过
注入这些内容@Value("${proxy.user}")
private String proxyUser;
@Value("${proxy.password}")
private String proxyPassword;
但这些总是评估为null
。我想这是因为当实例化带有main方法的类时,ApplicationContext和Spring应用程序不存在...
这种情况有最好的做法吗?我是否只是阅读了#34;老式的"办法?
类看起来像这样:
@Configuration
@EnableAutoConfiguration
public class Application {
@Value("${proxy.user}")
private String proxyUser;
@Value("${proxy.password}")
private String proxyPassword;
public static void main(String[] args) {
new Application().run();
}
private void run() {
ProxyAuthenticator proxyAuth = new ProxyAuthenticator(proxyUser, proxyPassword);
Authenticator.setDefault(proxyAuth);
// Spring Context starten
ConfigurableApplicationContext context = SpringApplication.run(Application.class);
}
}
答案 0 :(得分:2)
问题是你的main
你没有使用Spring Boot,你只是在创建一个新实例。
public static void main(String[] args) {
new Application().run();
}
现在,在run
方法中,您尝试使用尚未初始化的属性,因为它只是一个新实例,而不是Spring配置的实例。
您需要在main方法中启动应用程序,然后才能配置ProxyAuthenticator
。