Подтвердить что ты не робот

Включение определения bean, когда профиль НЕ активен

В моем приложении я использую несколько профилей, чтобы сделать определенный beans доступным для автоподготовки. То, что мне не хватает, - это возможность сделать bean подходящим для автоустройства, когда определенный профиль НЕ активен.

Лучший способ сделать это, о котором я думал, - вот что:

  • Предположим, что у нас есть список всех возможных профилей, например. {A, B, C, D}.
  • Профили, активные для конкретного выполнения, являются {A, C}.
  • Я создаю искусственные профили для всех возможных профилей, которые неактивны. В примере я создавал бы профили {not_B, not_D}.
  • beans Я хочу быть активным на основе неактивного профиля X Я делаю активным для профиля not_X. В моем случае, если бы я хотел, чтобы bean имел право на автоссылку, когда профиль B неактивен, я бы аннотировал их @Profile("not_B")

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

Можете ли вы придумать какое-нибудь лучшее решение?

4b9b3361

Ответ 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.