Включение определения bean, когда профиль НЕ активен
В моем приложении я использую несколько профилей, чтобы сделать определенный beans доступным для автоподготовки. То, что мне не хватает, - это возможность сделать bean подходящим для автоустройства, когда определенный профиль НЕ активен.
Лучший способ сделать это, о котором я думал, - вот что:
- Предположим, что у нас есть список всех возможных профилей, например. {A, B, C, D}.
- Профили, активные для конкретного выполнения, являются {A, C}.
- Я создаю искусственные профили для всех возможных профилей, которые неактивны. В примере я создавал бы профили {not_B, not_D}.
- beans Я хочу быть активным на основе неактивного профиля
X
Я делаю активным для профиля not_X
. В моем случае, если бы я хотел, чтобы bean имел право на автоссылку, когда профиль B неактивен, я бы аннотировал их @Profile("not_B")
Однако это решение требует предварительного знания всех возможных профилей.
Можете ли вы придумать какое-нибудь лучшее решение?
Ответы
Ответ 1
Вы можете использовать оператор not (!)... но вы должны использовать Spring 3.2 M1.
См. изменение, объявленное здесь:
http://www.springsource.org/node/3563
Конец здесь:
https://github.com/SpringSource/spring-framework/commit/bcd44f3798ed06c0704d2a3564b8a9735e747e87
Проблема: https://jira.springsource.org/browse/SPR-8728
Если для вашего проекта невозможно выполнить обновление до Spring 3.2, я бы рекомендовал не использовать подход @Profile и убедиться, что bean не создан в вашей конфигурации Spring.