[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"question-spring-chto-takoe-profili-v-spring-kak-rabotaet-annotatsiya-profile":3},{"id":4,"slug":5,"topicId":6,"topicSlug":7,"topicName":8,"topicEmoji":9,"question":10,"answer":11,"codeLang":12,"codeSrc":12,"important":12,"commonMistakes":12,"modernUsage":12,"difficulty":13,"tags":14,"related":15,"progress":16,"seo":17},616,"chto-takoe-profili-v-spring-kak-rabotaet-annotatsiya-profile",14,"spring","Spring","🌱","Что такое профили в Spring? Как работает аннотация @Profile?","Профили (Profiles) -- механизм Spring для условной регистрации бинов в зависимости от активного окружения (dev, test, prod). Позволяет иметь разные конфигурации без изменения кода.\n\n```java\n@Configuration\n@Profile(\"dev\")\npublic class DevDataSourceConfig {\n    @Bean\n    public DataSource dataSource() {\n        return new EmbeddedDatabaseBuilder()\n                .setType(EmbeddedDatabaseType.H2).build();\n    }\n}\n\n@Configuration\n@Profile(\"prod\")\npublic class ProdDataSourceConfig {\n    @Bean\n    public DataSource dataSource() {\n        HikariDataSource ds = new HikariDataSource();\n        ds.setJdbcUrl(\"jdbc:postgresql:\u002F\u002Fprod-server:5432\u002Fmydb\");\n        return ds;\n    }\n}\n```\n\n### Способы активации профиля\n\n```properties\n# 1. В application.properties\nspring.profiles.active=dev\n\n# 2. Аргумент командной строки\n# java -jar app.jar --spring.profiles.active=prod\n\n# 3. Переменная окружения\n# SPRING_PROFILES_ACTIVE=prod\n```\n\n```java\n\u002F\u002F 4. В тестах\n@ActiveProfiles(\"test\")\n@SpringBootTest\npublic class MyServiceTest { }\n```\n\n### Файлы свойств для профилей (Spring Boot)\n\n```\napplication.properties            \u002F\u002F общие свойства\napplication-dev.properties        \u002F\u002F свойства для профиля dev\napplication-prod.properties       \u002F\u002F свойства для профиля prod\n```\n\nСвойства из файла профиля перезаписывают значения из общего `application.properties`.\n\n### Логические операторы в профилях (Spring 5.1+)\n\n```java\n@Profile(\"dev & local\")    \u002F\u002F И\n@Profile(\"dev | staging\")  \u002F\u002F ИЛИ\n@Profile(\"!prod\")          \u002F\u002F НЕ\n```\n\n> **На собеседовании:** важно показать знание способов активации и приоритета файлов свойств. Частая ошибка -- забыть активировать профиль: бины с `@Profile(\"dev\")` не будут созданы, если профиль не активирован.","","junior",[7],[],null,{"title":18,"description":19,"ogTitle":18,"ogDescription":20,"keywords":21,"schemaAnswer":22,"featuredSnippetReady":23},"Что такое профили в Spring? Как работает аннотация @Profile? — Gymterview","Профили (Profiles) -- механизм Spring для условной регистрации бинов в зависимости от активного окружения (dev, test, prod). Позволяет иметь разные конфигурации","Профили (Profiles) -- механизм Spring для условной регистрации бинов в зависимости от активного окружения (dev, test, pr",[7,13],"Профили (Profiles) -- механизм Spring для условной регистрации бинов в зависимости от активного окружения (dev, test, prod). Позволяет иметь разные конфигурации без изменения кода.",true]