Проверьте, установлена ​​ли переменная окружения во время выполнения весенней загрузки - PullRequest
0 голосов
/ 19 сентября 2019

Мое приложение springBoot использует некоторые переменные окружения, которые установлены на моих клиентах, я установил их в своем application.properties, и все работает как положено.Все клиенты используют одни и те же переменные.Теперь возник вопрос, есть ли вероятность того, что конкретный клиент имеет определенный набор переменных или нет.Вам нужно будет только настроить переменную на некоторых клиентах.Идея состоит в том, чтобы иметь только один код для всех, но если я пытаюсь загрузить приложение с переменной в его свойствах, которой нет в приложении:

Unsatisfied dependency expressed through field 'config'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'configClass': Injection of autowired dependencies failed; nested exception is java.lang.IllegalArgumentException: Could not resolve placeholder 'X' in value " ${INFO}"

Есть ли способ проверить, еслипеременная установлена ​​и только если я получу ее содержимое?

1 Ответ

1 голос
/ 19 сентября 2019

Вы можете просто сделать что-то вроде этого:

import org.springframework.beans.BeansException;
import org.springframework.beans.factory.config.BeanFactoryPostProcessor;
import org.springframework.beans.factory.config.ConfigurableListableBeanFactory;
import org.springframework.context.ApplicationContextException;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.Ordered;
import org.springframework.core.PriorityOrdered;
import org.springframework.core.env.Environment;

@Configuration
public class VerifierBean implements BeanFactoryPostProcessor, PriorityOrdered {

   @Override public void postProcessBeanFactory(ConfigurableListableBeanFactory configurableListableBeanFactory) throws BeansException {
      final Environment environment = configurableListableBeanFactory.getBean(Environment.class);

      if(environment.getProperty("property1.something") == null) {
         throw new ApplicationContextException("Missing property on context bootstrap" + " property1.something");
      }
   }

   @Override public int getOrder() {
      return Ordered.HIGHEST_PRECEDENCE;
   }
}

И вы увидите что-то подобное в консоли:

[  restartedMain] o.s.boot.SpringApplication : Application run failed

org.springframework.context.ApplicationContextException: Missing property on context bootstrap property1.something
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...