Как загрузить bean-компонент, только если свойство имеет значение false или не определено? - PullRequest
0 голосов
/ 24 февраля 2019

У меня bean-компонент, который следует загружать, только если свойство имеет значение false или не определено.Если я аннотирую его с помощью:

@ConditionalOnProperty(prefix = "myFeature1", name = "enable", havingValue = "false")

, свойство myFeature1.enable должно быть явно установлено на false.Это свойство определяется как логическое значение со значением false по умолчанию в аннотированном классе @ConfigurationProperties, но эта аннотация, похоже, обрабатывается слишком поздно при запуске приложения, поэтому свойство myFeature1.enable должно использоваться какстрока из Environment.

Я пытаюсь добавить аннотацию:

@ConditionalOnProperty(prefix = "dlcm.module.auth", name = "enable", matchIfMissing = true)

, но @ConditionalOnProperty не повторяетсяаннотация.

Я также пытался использовать @ConditionalOnExpression

@ConditionalOnExpression("'${dlcm.module.auth.enable}' == 'false' or '${dlcm.module.auth.enable}' == ''")

, но заполнитель свойства, похоже, заменяется чем-то другим, кроме пустой строки.

Итак, мой вопрос: как загрузить бин, только если свойство имеет значение false или не определено?

1 Ответ

0 голосов
/ 24 февраля 2019

Решением является использование аннотации @ConditionalOnExpression со значением по умолчанию в заполнителе свойства:

@ConditionalOnExpression("'${dlcm.module.auth.enable:false}' == 'false'")
...