Как загрузить бин, только если значение свойства отличается от фиксированного значения - PullRequest
0 голосов
/ 05 февраля 2020

Я сталкиваюсь с ситуацией, когда бин должен создаваться контекстом приложения, только если свойство содержит любое другое значение, кроме указанного c значения. то есть .. одно свойство file.path= /specific/path, если значение отличается от этого, то bean-компонент должен быть загружен.

Я вижу, что из коробки @ConditionalOnProperty (name="file.path", havingValue="...."), но в моем случае я ищу свойство типа havingValueOtherThan="..." или аналогичный тип свойства или аннотации, если оно есть в коробке весной.

1 Ответ

5 голосов
/ 05 февраля 2020

Существует много возможных вариантов, помимо профилей, которые были указаны в комментариях, здесь есть 2 варианта:

Опция 1

Использование @ConditionalOnExpression с любым выражением SPeL вы wi sh

Вариант 2

Вы всегда можете создать свою собственную условную аннотацию с любым логином c:

Создать аннотацию, которая будет изображать ваш собственный бизнес-кейс с @Conditional на нем. Затем реализуйте условную логику c на ваш выбор. Здесь является примером достижения этого.

Кстати, профили, которые упоминаются в комментариях, используют движок Conditionals под капотом (аннотация @Profile имеет @Conditional({ProfileCondition.class}) в своем определении, поскольку Spring 4.x)

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