Size: a a a

Spring Framework and more

2019 May 11

Д

Дмитрий in Spring Framework and more
Andrey Sidorenko
Можно ли контроллеры наследовать от интерфейсов, в которых есть методы помеченные как @RequestMapping?
Можно, у нас такое было, но не все аннотации подтягиваются, так что их приходится дублировать
источник

AS

Andrey Sidorenko in Spring Framework and more
Не все? Например?
источник

RS

Ruslan Stelmachenko in Spring Framework and more
Sander 🕶
у меня несколько вопросов, кто может помогите (можете написать, если в чем-то ошибаюсь):
1) можно ли держать простую логику в entity? на подобии таких методов: isNew, isOngoing, isRturned, externalDays
2) или лучше, всю логику держать в domain service - "MovieRentalService"
3) или стоит держать только сложную в отдельном сервисе, ибо мне кажется что простую логику на подобии такой isNew, isOngoing, isRturned, externalDays, можно держать и в entity.
4) у меня два класса "MovieRental и MovieRentalService",
где у MovieRentalService есть след. методы: calculatePrice, calculateLateCharge и т.д.,
работать это будет так movieRentalService.calculatePrice(movieRental), где внутри метода calculatePrice, будет сеттиться цена фильма для объекта movieRental.
на подобии такого думаю сделать - https://github.com/adityasatrio/domainModel/blob/master/DomainModelPattern/src/anemic/domain/service/OrderService.java, нормальное ли это решение.
5) нормально ли что у класса есть все сеттеры? так как до этого у меня были только самые необходимые setters,
так как внутри MovieRental был builder, внутри которого и происходили все расчеты, однако это не совсем удобно, так как объект становился immutable, поэтому я и начал смотреть в сторону отдельного сервиса, который и будет производить некоторые операции над моим объектом, но тогда мне придется добавить все setters-ы к моему классу MovieRental.
По-моему подход в п. 4 не очень хорош.
Сложная бизнес-логика в сервисах - это нормально. Но метод сервиса должен возвращать результат, а не записывать его внутрь переданного же объекта. Иначе получается, что до вызова данного метода на объекте, объект не полный. Этот объект могут принимать в качестве аргументов другие методы, которые никогда не знают, полный или не полный им объект передали (за этим обязан будет следить использующий эти методы программист - это очень хрупкое АПИ), но при этом их логика может рассчитывать на эти данные, либо каждый раз проверять их наличие и самим вызывать этот сеттер.
Как итог: запутанный код, когда вообще не понятно что от чего зависит, и для подстраховки всегда заполняется все.
источник

S🕶

Sander 🕶 in Spring Framework and more
Ruslan Stelmachenko
По-моему подход в п. 4 не очень хорош.
Сложная бизнес-логика в сервисах - это нормально. Но метод сервиса должен возвращать результат, а не записывать его внутрь переданного же объекта. Иначе получается, что до вызова данного метода на объекте, объект не полный. Этот объект могут принимать в качестве аргументов другие методы, которые никогда не знают, полный или не полный им объект передали (за этим обязан будет следить использующий эти методы программист - это очень хрупкое АПИ), но при этом их логика может рассчитывать на эти данные, либо каждый раз проверять их наличие и самим вызывать этот сеттер.
Как итог: запутанный код, когда вообще не понятно что от чего зависит, и для подстраховки всегда заполняется все.
сейчас два метода там у меня, скорей больше и не будет rentMovie и returnMovie, почему?
источник

Д

Дмитрий in Spring Framework and more
Andrey Sidorenko
Не все? Например?
Не помню, это 2 года назад было, просто знайте что там точно не все так просто) поэкспериментируйте
источник

S🕶

Sander 🕶 in Spring Framework and more
Sander 🕶
сейчас два метода там у меня, скорей больше и не будет rentMovie и returnMovie, почему?
делаю вот так movieRentalService.rentMovie(movieRental); и все он мне меняет статусы и расчеты так как мне нужно,
вместо buildera в entity, который у меня был.
источник

RS

Ruslan Stelmachenko in Spring Framework and more
Ну rentMovie и public void calculateTotal(Order order) из примера выше - это немного о разном
источник

S🕶

Sander 🕶 in Spring Framework and more
Ruslan начал писать тесты, скорей мне ток rentMovie и returnMovie нужны будут
источник

RS

Ruslan Stelmachenko in Spring Framework and more
Я против именно подхода из примера на гитхабе, который вы привели выше. Т.е. когда у вас объект Order может быть либо с заполненным total, либо с пустым. И в клиентском коде вы никогда не знаете, какой у вас сейчас.
источник

RS

Ruslan Stelmachenko in Spring Framework and more
Если же этот calculateTotal будет вызываться ВСЕГДА при загрузке Order из БД (т.е. прямо в OrderService.findOrder() будет выполняться и других способов достать из БД ордер - не будет — тогда проблемы нет. У вас всегда в клиентский код попадает полный объект Order.
источник

DN

Dima Narepeha in Spring Framework and more
Всем привет! :))) возник один интересный вопрос. Почему JPA не поддерживает nested transactions? В чем настоящая причина этого, под капотом JPA (имею ввиду логику JPA)? :) был бы рад ответу
источник

S🕶

Sander 🕶 in Spring Framework and more
Ruslan Stelmachenko
Если же этот calculateTotal будет вызываться ВСЕГДА при загрузке Order из БД (т.е. прямо в OrderService.findOrder() будет выполняться и других способов достать из БД ордер - не будет — тогда проблемы нет. У вас всегда в клиентский код попадает полный объект Order.
я думаю что мне считать не надо больше, ибо расчеты будут уже сохранены в базе данных,
но я должен буду в application service, добавлять что-то типо такого movieRentalService.rentMovie(movieRental)
источник

S🕶

Sander 🕶 in Spring Framework and more
но при вызовке объекта order.findById(1), никаких расчетов не будет, если что-то надо будет сделать, придется этим серивсом пользоваться
источник

S🕶

Sander 🕶 in Spring Framework and more
я до этого делал чтоб все считало прямо в Order entity, но мне пришлось делать builder, но с этим были некоторые проблемы,
люди порекомендовали сделать отдельный сервис в стиле anemic domain model.
источник

S🕶

Sander 🕶 in Spring Framework and more
так я и пришел к такому решению
источник

S🕶

Sander 🕶 in Spring Framework and more
собственно теперь я не уверен, делаю ли я все правильно
источник

S🕶

Sander 🕶 in Spring Framework and more
но это точно лучше чем было
источник

YG

Yury Golikov in Spring Framework and more
Подскажите плиз, что использовать в Spring Security для аутентификации по AccessToken (JWT не нужен)? Реализовывать свои классы, свой AuthenticationProvider и тд? Или есть что-то готовое?
источник

S🕶

Sander 🕶 in Spring Framework and more
https://pastebin.com/VzLxxH0x - что скажешь тесты понятные? или отвратительно, если что не нравиться скажите пожалуйста
источник

AS

Andrey Sidorenko in Spring Framework and more
Последний тест ничего не проверяет :D
источник