[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"question-spring-kak-ispolzovat-value-i-propertysource":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},615,"kak-ispolzovat-value-i-propertysource",14,"spring","Spring","🌱","Как использовать @Value и @PropertySource?","`@Value` -- аннотация для внедрения значений из внешних источников (файлы свойств, переменные окружения, SpEL-выражения) в поля или параметры бинов. `@PropertySource` -- указывает файл свойств для загрузки.\n\n```java\n@Configuration\n@PropertySource(\"classpath:application.properties\")\n@PropertySource(\"classpath:db.properties\")\npublic class AppConfig { }\n```\n\n### Основные способы использования @Value\n\n```java\n@Component\npublic class AppSettings {\n\n    @Value(\"${app.name}\")\n    private String appName;                    \u002F\u002F из properties\n\n    @Value(\"${app.description:Default}\")\n    private String description;                \u002F\u002F со значением по умолчанию\n\n    @Value(\"${server.port}\")\n    private int serverPort;                    \u002F\u002F автоматическое преобразование типов\n\n    @Value(\"${JAVA_HOME}\")\n    private String javaHome;                   \u002F\u002F переменная окружения\n\n    @Value(\"#{T(java.lang.Math).random()}\")\n    private double randomValue;                \u002F\u002F SpEL-выражение\n\n    @Value(\"${app.servers}\")\n    private List\u003CString> servers;              \u002F\u002F список (app.servers=a,b,c)\n}\n```\n\n### Лучшая практика -- @ConfigurationProperties (Spring Boot)\n\nДля группы связанных свойств лучше использовать `@ConfigurationProperties`:\n\n```java\n@Configuration\n@ConfigurationProperties(prefix = \"db\")\npublic class DatabaseProperties {\n    private String url;\n    private int poolSize;\n    \u002F\u002F геттеры и сеттеры обязательны\n}\n```\n\n> **На собеседовании:** интервьюер хочет услышать про значения по умолчанию, SpEL и `@ConfigurationProperties` как альтернативу `@Value`. Частая ошибка -- использовать `@Value` в статических полях (не работает) или забыть значение по умолчанию (приложение не запустится, если свойство не найдено).","","junior",[7],[],null,{"title":18,"description":19,"ogTitle":18,"ogDescription":20,"keywords":21,"schemaAnswer":22,"featuredSnippetReady":23},"Как использовать @Value и @PropertySource? — Gymterview","`@Value` -- аннотация для внедрения значений из внешних источников (файлы свойств, переменные окружения, SpEL-выражения) в поля или параметры бинов. `@PropertyS","`@Value` -- аннотация для внедрения значений из внешних источников (файлы свойств, переменные окружения, SpEL-выражения)",[7,13],"`@Value` -- аннотация для внедрения значений из внешних источников (файлы свойств, переменные окружения, SpEL-выражения) в поля или параметры бинов. `@PropertySource` -- указывает файл свойств для загрузки.",true]