Сообщество разработчиков Java Scala Kotlin Groovy Clojure Чат для нач-их: @javastart Наш канал: @proJVM Вакансии: @jvmjobs @jvmjobschat ⚠️ Оффтоп -> @flood ❌Переход на личности ❌Троллинг ❌Реклама ❌HH (вакансии) ❌Варез
Имя класса реализации должно отображать суть реализации и указывать на её характеристику
Читать полностью…он целиком один огромный антипаттерн и признак проблем 🫠
после скалы смотреть на мапстракт или там ломбок вообще невозможно
репозиторий - имплементация деталей работы с источником данных
сервис - как минимум для юнит тестов и моков
контроллер - для выноса OpenAPI спеки
Кстати, кто Спринг-потрошитель Борисова помнит или недавно смотрел? Он там прям явно ошибку показывал, если классы вместо интерфейсов использовать. Но давно это было, уже не помню из-за чего
Читать полностью…Так, условно, если у тебя зависимость UsersService, то ты ему можешь этот мок присвоить? Или тип всё же другой?
Читать полностью…Кроме того, что выше написали про контракты и тестирование:
- если использовать интерфейсы, Spring для создания прокси сможет применять Dynamic Proxy, встроенную в Java, тогда код будет легче и производительнее.
- если делать классы, Spring переключается на CGLIB, который сложнее, требует больше ресурсов и внешнюю либу. При этом CGLIB не работает с final-классами, для которых запрещено наследование.
Так что использование интерфейсов помогает Spring работать более оптимально.
Так я там это делал чтобы разделять интерфейс и сервис класс 🌚. Кстати форточку открой 🌚
Читать полностью…This artifact was moved to: org.mockito » mockito-core
https://mvnrepository.com/artifact/org.mockito/mockito-inline
Ну вот там выше человек утверждает, что через Mockito можно как-то замокать без использования интерфейса
Читать полностью…я скорее к тому, что стоит сначала сделать дизайн приложения, чтоб не жало и не болело на ровном месте - и только когда 1) оно станет успешно и все будут пользоваться 2) когда разбухнет от бинов что начнет трещать и стартовать по 10 минут
и только после всего есть смысл вообще вопросом задаться
ну то есть никогда, если предыдущие шаги сделаны нормально)
если юзается AsyncAPI, то интерфейс и для консьюмеров/продьюсеров можно выносить
Читать полностью…всегда использую интерфейсы для этих трех чуваков: репозиторий/сервис/контроллер
Читать полностью…Возможно, просто еще одна из причин использовать интерфейсы
Читать полностью…экономия на спичках, не?
спринг не компилирует -> разница будет для раздутых приложений как оптимизация скорости старта и, может быть, перегруженных сценариев, но и только
Это практика для начинающих разработчиков в основном, так проще выделить контракт. Если ты можешь сразу писать сервис, понимая, что нужно минимизировать связность в приложении, такой подход не нужен
Читать полностью…