Насколько я знаю, сервисный уровень отвечает за сохранение бизнес-логики и взаимодействие с уровнем DAO.Он отличается абстрактностью, и если вы попытаетесь разделить свое приложение на просто контроллер, сервис и дао, вы в конечном итоге добавите много кода на уровень сервиса.
Я предпочитаю определять класс обслуживания как точку входа в мою бизнес-логику.То есть контроллер может вызывать только и только сервисный уровень.Мы стараемся избегать добавления статических методов в слой сервиса.Скажем, у меня есть пользовательский сервис, он будет предоставлять методы, связанные с пользователями.За уровнем сервиса у нас есть dao, утилиты dto сущностей и т. Д. Также класс сервиса или что-то ниже него может вызывать другие классы сервиса.