Как вы, возможно, знаете, слой Controller в большинстве случаев тесно связан со слоем View.
В проектах, в которых я участвую как архитектор или программист, я никогда не вкладываю бизнес-логику в контроллер. Потому что я никогда не видел ни одной технологии, в которой можно переносить слой, который напрямую связывается с представлением.
Уровень контроллера должен действовать как сервисный уровень для представления. Так да. Представление должно знать о контроллере. И, если предыдущее утверждение верно, контроллер не может связаться с представлением.
Я создаю свою бизнес-логику (мой @EJB или Spring's @Service) в слое, полностью основанном на POJO. Это мой переносимый бизнес уровень.
Контроллер - это просто мост между представлением и уровнем бизнес-правил. Он вызывает бизнес-методы, правильно (иногда) форматирует их ответы и отправляет их обратно в представление. В этом контексте контроллером может быть веб-служба, управляемый компонент, набор тестов и т. Д. ...