Autowire bean из весеннего конфига - специфичная для среды - PullRequest
0 голосов
/ 10 ноября 2018

Я пытаюсь установить логический флаг для конкретной среды. В моей весенней конфигурации я определил три bean-компонента, которые зависят от конкретной среды, как показано ниже.

    <bean id="validationFlag-E1" class="java.lang.Boolean.FALSE"/>
    <bean id="validationFlag-E2" class="java.lang.Boolean.TRUE"/>
    <bean id="validationFlag-E3" class="java.lang.Boolean.TRUE"/>

У меня также есть системное свойство «spring.profiles.active», определенное на уровне сервера, и его значение равно «E1 / E2 / E3» в зависимости от среды.

В моем сервисе я пытаюсь выполнить автоматическую разводку, как показано ниже, но она не работает, и я не получаю квалифицируемый компонент типа 'java.lang.Boolean': ожидается, что по крайней мере 1 компонент будет квалифицирован как кандидат для автоматической передачи. Пожалуйста, сообщите мне.

@Autowired
@Qualifier("validationFlag-${spring.profiles.active}")
Boolean emailInUseValidationFlag;

Мы можем выполнить вышеуказанное требование, имея индивидуальный файл свойств среды. Но я не хочу создавать три файла свойств для одного флага. Итак, пробуя выше подход и я использую пружинный MVC.

Ответы [ 2 ]

0 голосов
/ 10 ноября 2018

Измените определение вашего бина на:

<bean id="validationFlag-E1" class="java.lang.Boolean">
     <constructor-arg value="false"/>
</bean>
    <bean id="validationFlag-E2" class="java.lang.Boolean">
<constructor-arg value="true"/>
</bean>
    <bean id="validationFlag-E3" class="java.lang.Boolean">
<constructor-arg value="true"/>
</bean>
0 голосов
/ 10 ноября 2018

Вы можете использовать свойство среды ${blah.blah.flag} (или любое другое имя по вашему выбору) со значением флага (false или true) -Dblah.blah.flag=true, а затем ввести это значение как свойство

@Value("${blah.blah.flag}")
private Boolean flag;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...