18. Расскажите про аннотацию @Profile

18. Расскажите про аннотацию @Profile

UNKNOWN

Профили — это ключевая особенность Spring Framework, позволяющая нам относить наши бины к разным профилям (логическим группам), например, dev, test, prod.

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

Используя  аннотацию  @Profile,  мы  относим  бин  к  конкретному  профилю.  Её  можно применять на уровне класса или метода. Аннотация @Profile принимает в качестве аргумента имя одного или нескольких профилей. Она фактически реализована с помощью гораздо более гибкой аннотации @Conditional.

Рассмотрим базовый сценарий - у нас есть бин, который должен быть активным только во  время  разработки,  но  не  должен  использоваться  в  продакшене.  Мы  аннотируем  этот компонент  с  профилем  «dev»,  и  он  будет  присутствовать  в  контейнере  только  во  время разработки - во время продакшена профиль dev просто не будет активен:

@Component

@Profile(\"dev\")

public class DevDatasourceConfig

В качестве быстрого обозначения имена профилей также могут начинаться с оператора NOT,  например  «!dev»,  чтобы  исключить  их  из  профиля.  В  приведенном  ниже  примере компонент активируется, только если профиль «dev» не активен:

@Component

@Profile(\"!dev\")

public class DevDatasourceConfig

Следующим шагом является активация нужного профиля для того, чтобы в контейнере были  зарегистрированы  только  бины,  соответствующие  данному  профилю.  Одновременно могут быть активны несколько профилей.

По умолчанию, если профиль бина не определен, то он относится к профилю “default”.

Spring также предоставляет способ установить профиль по умолчанию, когда другой профиль не активен, используя свойство «spring.profiles.default».

В  Spring  Boot  есть  возможность  иметь  один  файл настроек  application.properties,  в котором будут основные настройки для всех профилей, и иметь по файлу настроек для каждого профиля application-dev.properties и application-prod.properties, содержащиесвоисобственные дополнительные настройки.


Предыдущий вопрос: 17. Расскажите про аннотацию @ComponentScan

Следующий вопрос: 19. Расскажите про ApplicationContext и BeanFactory, чем отличаются? В каких случаях что стоит использовать?

Все вопросы по теме: список

Все темы: список

Вопросы/замечания/предложения/нашли ошибку: напишите мне

Report Page