TGViewer
Java Geek Java Geek @java_geek · 2.37K subscribers
Post #369 1.04K
🧠 @Value — тихая ловушка Spring'а

Сегодня покажу вам, почему аннотация @Value — не лучший выбор для работы с конфигурацией, особенно в Spring Boot 3+.

Допустим, у вас такой конфиг:


@Value("${app.timeout:30}")
private int timeout;


📌 Проблема #1: Плохая валидация

Если значение в application.yaml невалидное (например, timeout: abc), приложение *упадёт при старте*, но вы получите лишь общее сообщение Failed to bind…, без точной причины.

📌 Проблема #2: Нет автокомплита

IDE не сможет подсказать, какие свойства вообще есть. Рефакторинг ключей — боль.

📌 Проблема #3: Тестирование

Труднее подменить значения в тестах: @Value не так просто "подсунуть" моками.


✅ Современный подход — использовать @ConfigurationProperties:


@ConfigurationProperties(prefix = "app")
@Configuration
public class AppProperties {
private Duration timeout = Duration.ofSeconds(30);

// геттеры/сеттеры
}


И в application.yaml:


app:
timeout: 30s


💡 Spring сам сконвертирует 30s в Duration, поддержит автокомплит в IDE, и вы сможете валидировать значения с @Validated.

⚠️ Не забудьте включить бин:


@EnableConfigurationProperties(AppProperties.class)


📌 Резюме: @Value — для быстрых хаков. Для серьёзной конфигурации — @ConfigurationProperties.

👉 @java_geek
  • 👍 6
  • 🔥 1
More from @java_geek
  1. Sep 24, 2026Что такое стек-трейс? Стек-трейс (stack trace) представляет собой список вызовов методов в…
  2. Sep 17, 2026Как перебрать элементы LinkedList в обратном порядке, не используя медленный get(index)? Д…
  3. Sep 15, 2026Array vs ArrayList Выбор между Array (стандартным Java-массивом) и ArrayList зависит от сп…
  4. Sep 11, 2026Какова цель ключевого слова final, когда оно используется с переменной? Ключевое слово fin…
  5. Sep 9, 2026☕ Java Tip: Как работает var в Java С версии Java 10 появился ключевое слово var. Оно упро…
  6. Sep 7, 2026Что такое перегрузка методов в Java? Перегрузка методов — это мощный приём, который позвол…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →