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, чем отличаются? В каких случаях что стоит использовать?
Все вопросы по теме: список
Все темы: список
Вопросы/замечания/предложения/нашли ошибку: напишите мне