@Bean выдает исключение NULL, если значение из файла свойств равно NULL - PullRequest
0 голосов
/ 08 марта 2019

Позвольте мне показать код.

@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: Ошибка создания бина с именем 'simpleClientHttpRequestFactory', определенного в ресурсе пути к классу [cn / homersatell / dd / jd / report / config / RestTemplateConfig.class]: сбой создания экземпляра бина через метод фабрики;вложенным исключением является org.springframework.beans.BeanInstantiationException: не удалось создать экземпляр [org.springframework.http.client.ClientHttpRequestFactory]: метод фабрики 'simpleClientHttpRequestFactory' вызвал исключение;вложенным исключением является java.lang.NullPointerException

PublicConfigRpt.REST_TEMPALTE_READ_TIMEOUT имеет значение NULL, когда вызывается simpleClientHttpRequestFactory, а затем генерируется NULL исключение.Кто-нибудь может сказать мне, как справиться с этим?Спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...