我有一个名为proxyconfig.java的配置文件,它读取yaml文件并将其注入到ProxyConfig.java文件中。我需要使用配置中的属性将其注入到Httputil类中来设置代理,但是我得到了一个空指针异常,因为它没有注入属性host和port来设置代理。我使用StaticContextAccessor访问代理配置类并获取主机和端口值。有没有人能帮我解决一下我现在做错了什么?
@Configuration
public class ProxyConfig {
@Value("${proxy.host}")
private String host;
@Value("${proxy.port}")
private int port;
public int getPort() { return this.port; }
public int getHost() { return this.host; }
}StaticContextAccessor类:
public class StaticContextAccessor {
private static StaticContextAccessor instance;
@Autowired
private ApplicationContext applicationContext;
@PostConstruct()
public void registerInstance() {
instance = this;
}
public static <T> T getBean(Class<T> clazz) {
return instance.applicationContext.getBean(clazz);
}
}我的HttpUtil类:
public class Httputil {
private static RequestConfig defaultRequestConfig = RequestConfig.custom()
.setConnectTimeout(1000)
.setSocketTimeout(10000)
.setConnectionRequestTimeout(10000)
// setting the proxy
//causes null pointer as it cannot read host and port
.setProxy(new HttpHost(StaticContextAccessor.getBean(ProxyConfig.class).getHost(), StaticContextAccessor.getBean(ProxyConfig.class).getPort())
}发布于 2017-06-28 15:11:49
private static RequestConfig defaultRequestConfig = RequestConfig.custom()
.setConnectTimeout(1000)
.setSocketTimeout(10000)
.setConnectionRequestTimeout(10000)
// setting the proxy
//causes null pointer as it cannot read host and port
.setProxy(new HttpHost(StaticContextAccessor.getBean(ProxyConfig.class).getHost(), StaticContextAccessor.getBean(ProxyConfig.class).getPort())在这段代码中,defaultRequestConfig是static,所以它在装入类时被初始化。在这点上:
StaticContextAccessor实际上是一个bean,则它未初始化,因此instance为bean你需要重新考虑整个设计。为什么不把所有东西都作为Spring托管bean呢?为什么不使用defaultRequestConfig作为bean呢?为什么会有这么多静态数据呢?
https://stackoverflow.com/questions/44793945
复制相似问题