属性文件中的值为空时,@ Bean会引发空异常

时间:2019-03-08 02:09:18

标签: configuration

让我显示代码。

@Configuration
public class RestTemplateConfig {
    @Bean
    public RestTemplate restTemplate(ClientHttpRequestFactory factory) {
        return new RestTemplate(factory);
    }
    @Bean
    public ClientHttpRequestFactory simpleClientHttpRequestFactory() {
        SimpleClientHttpRequestFactory factory = new SimpleClientHttpRequestFactory();
        factory.setReadTimeout(PublicConfigRpt.REST_TEMPALTE_READ_TIMEOUT);
        factory.setConnectTimeout(PublicConfigRpt.REST_TEMPLATE_CONNECT_TIMEOUT);
        return factory;
    }
}

PublicConfigRpt.REST_TEMPALTE_READ_TIMEOUT的定义如下。

@Configuration
public class PublicConfigRpt 
{
    public static Integer REST_TEMPALTE_READ_TIMEOUT;
    public static Integer REST_TEMPLATE_CONNECT_TIMEOUT;

    @Value("${rest_template_read_timeout}")
    public void setRestTempalteReadTimeout(Integer restTempalteReadTimeout) {
        REST_TEMPALTE_READ_TIMEOUT = restTempalteReadTimeout;
    }

    @Value("${rest_template_connect_timeout}")
    public void setRestTemplateConnectTimeout(Integer restTemplateConnectTimeout) {
        REST_TEMPLATE_CONNECT_TIMEOUT = restTemplateConnectTimeout;
    }

}

从属性文件中读取超时参数,并在SimpleClientHttpRequestFactory中进行设置。

从本地Intellij构思启动时可以。但是当部署到k8s时,它会引发异常。

  

2019/03/07 16:50:34.964 |信息|由以下原因引起:org.springframework.beans.factory.BeanCreationException:在类路径资源[cn / homersatellite / dd / jd / report / config / RestTemplateConfig.class]中创建名称为'simpleClientHttpRequestFactory'的bean时出错:通过工厂方法实例化Bean失败;嵌套的异常是org.springframework.beans.BeanInstantiationException:无法实例化[org.springframework.http.client.ClientHttpRequestFactory]:工厂方法'simpleClientHttpRequestFactory'引发了异常;嵌套的异常是java.lang.NullPointerException

当调用simpleClientHttpRequestFactory时,PublicConfigRpt.REST_TEMPALTE_READ_TIMEOUT为null,然后引发null异常。有人可以告诉我如何处理吗?谢谢。

0 个答案:

没有答案