⚡️ Почему record не взлетел даже для DTO
Казалось бы идеальная фича для DTO. Иммутабельность, компактный синтаксис, никакого Lombok.
Но есть одна деталь, которая всё портит. В record геттер называется name(), а не getName().
Звучит мелко? Но это нарушение JavaBean-конвенции, которой 20+ лет. И всё, что на ней завязано ломается или требует допиливания:
→ Jackson — заработал только с версии 2.12. До этого name() не распознавался как property вообще
→ ModelMapper — не видит аксессоры record из коробки, нужна ручная конфигурация
→ Swagger/OpenAPI-генераторы — генерируют дублирующиеся поля или теряют их
→ BeanUtils, PropertyUtils (Apache Commons) — не работают, ждут getName()
→ Любой легаси-код с рефлексией — Introspector.getBeanInfo() record не понимает
И это не баги инструментов — это осознанное решение команды Java. Они сказали: «Мы проектируем для нового кода, а не для поддержки старых конвенций».
Звучит красиво в теории. На практике в энтерпрайзе стек из легаси-либ, и record там как белая ворона.
💬 Работаете record'ами или обходите их стороной?
══════ Навигация ══════
Вакансии • Задачи • Собесы
🐸 Библиотека джависта
#CoreJava
Post #7576
2.66K
- 😁 7
- ❤ 5
- 🔥 2
- 👍 1