Имя Spring Qualifier на основе весеннего профиля в Spring MVC - PullRequest
0 голосов
/ 12 ноября 2018

В моем Spring Config я определил три bean-компонента следующим образом.

   <bean id="validationFlag-dev" class="java.lang.Boolean">
        <constructor-arg value="false"/>
    </bean>
    <bean id="validationFlag-test" class="java.lang.Boolean">
        <constructor-arg value="true"/>
    </bean>
    <bean id="validationFlag-prod" class="java.lang.Boolean">
        <constructor-arg value="true"/>
    </bean>

В моем сервисе я бы хотел, чтобы @Autowired bean основывался на профиле пружины. Я пытаюсь, как указано ниже, определить имя квалификатора на основе активного профиля пружины, но он дает ошибку, не может найти компонент с квалификатором. Как я могу обработать имя квалификатора в этой ситуации весной MVC. Пожалуйста, сообщите.

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

Ответы [ 2 ]

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

Возможно, в вашем случае более простым решением будет добавить этот флаг как свойство.

Просто создайте файл свойств для каждого профиля.
например для профиля dev создать приложение-dev.properties и установить свойство validation.flag=false

Чтобы получить этот флаг, используйте

@Value("{validation.flag}") Boolean validFlag;

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

Вы не используете профили правильно. Вам следует создать экземпляр одного компонента, а не каждого компонента для каждого профиля, и сделать это в зависимости от того, какой профиль активен.

Например:

<beans profile="dev">
  <bean id="validationFlag" class="java.lang.Boolean">
    <constructor-arg value="false"/>
  </bean>
</beans>

Тогда просто выполните автоматическое подключение следующим образом:

@Autowired
@Qualifier("validationFlag")
Boolean validationFlag;
...