Value vs @ConfigurationProperties — кого выбрать? Часто вижу, как… — Библиотека Java разработчика — TG.ME

🧠 @Value vs @ConfigurationProperties — кого выбрать?

Часто вижу, как даже опытные разработчики по привычке используют @Value для инъекции конфигурации:


@Value("${app.timeout}")
private Duration timeout;


⚠️ Но с ростом приложения @Value становится хрупким и неудобным.

📌 Лучший подход — использовать @ConfigurationProperties:


@ConfigurationProperties(prefix = "app")
public record AppProperties(Duration timeout, String apiKey) {}



@Bean
@ConfigurationPropertiesBinding
public AppProperties appProperties() {
return new AppProperties();
}


Преимущества @ConfigurationProperties:
- 💡 Группирует настройки логически
- 🔍 Работает с валидацией (@Validated, @NotNull, и т.д.)
- 📚 Отлично поддерживается IDE (автокомплит, рефакторинг)
- 🔧 Удобно тестировать и мокать

🆕 Начиная с Spring Boot 2.2+, можно использовать record-классы и просто зарегистрировать бин через @EnableConfigurationProperties:


@Configuration
@EnableConfigurationProperties(AppProperties.class)
public class AppConfig {}


Так что, если у вас в проекте до сих пор десятки @Value — самое время навести порядок.

📲 Мы в MAX

👉@BookJava
👍1
July 6, 2026 1.1K 1 3