Где разместить бизнес-логику в рамках spring mvc?

Я не знаю, где поставить бизнес-логику в mvc spring, потому что я новичок в этом. Я имею представление о том, что делать, но из-за недостатка знаний spring, я не знаю, с чего начать. Я также хотел бы спросить, знает ли кто-нибудь, где я могу получить хороший учебник по этому вопросу или полный пример веб-приложения Spring mvc, на котором есть бизнес-логика? В любом случае, бизнес-логика, о которой я говорил, связана с обработкой базы данных :)

Ответ 1

@Controller классы служат C из MVC. Обратите внимание, что реальный контроллер в Spring MVC DispatchServlet, который будет использовать конкретный класс @Controller для обработки запроса URL.

@Service классы должны служить для вашего уровня обслуживания. Здесь вы должны поместить свою бизнес-логику.

@Repository классы должны служить для вашего уровня доступа к данным. Здесь вы должны поместить CRUD-логику: вставить, обновить, удалить, выбрать.

@Service, @Repository, и ваши сущностные классы будут M от MVC. JSP и другие технологии просмотра (например, JSP, Thymeleaf и т.д.) Будут соответствовать V из MVC.

@Controller классы должны иметь доступ только к классам @Service через интерфейсы. Аналогичные классы @Service должны иметь доступ только к другим классам @Service и к определенному набору классов @Repository через интерфейсы.

Ответ 2

Многие люди рекомендуют добавить бизнес-логику на уровень обслуживания. Я лично узнаю, что это не отличная идея, особенно когда вы начинаете тестирование: вам, возможно, придется заниматься либо упорством, и логикой бизнеса одновременно, либо издеваться над всем, и тогда все может стать очень грязным.

Я действительно рекомендую прочитать эту статью, прежде чем делать какие-либо выводы: Самый большой недостаток веб-приложений Spring

Возобновление, идея состояла бы в том, чтобы переместить бизнес-логику на уровень модели и упростить ваши сервисные методы.

Ответ 3

Как правило, ваша бизнес-логика входит в сервисный уровень. Хотя вы можете поместить основные правила валидации в свои pojos с аннотациями JSR.

Для приложения Spring MVC у вас есть контроллеры, которые обрабатывают HTTP-запросы, и слой домена, представляющие ваши бизнес-модели. У вас часто есть слой сохранения или DAO. У вас может быть и сервисный уровень, чтобы помочь с нетривиальной логикой.

Ваш комментарий по обработке базы данных не имеет смысла. Бизнес-правила ортогональны хранению данных. Ваша обработка базы данных должна идти в вашем уровне персистентности.