Я не знаю, где поставить бизнес-логику в mvc spring, потому что я новичок в этом. Я имею представление о том, что делать, но из-за недостатка знаний spring, я не знаю, с чего начать. Я также хотел бы спросить, знает ли кто-нибудь, где я могу получить хороший учебник по этому вопросу или полный пример веб-приложения Spring mvc, на котором есть бизнес-логика? В любом случае, бизнес-логика, о которой я говорил, связана с обработкой базы данных :)
Где разместить бизнес-логику в рамках 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. У вас может быть и сервисный уровень, чтобы помочь с нетривиальной логикой.
Ваш комментарий по обработке базы данных не имеет смысла. Бизнес-правила ортогональны хранению данных. Ваша обработка базы данных должна идти в вашем уровне персистентности.