У меня есть трехуровневое Java-приложение, состоящее из уровня представления, бизнес-уровня и уровня доступа к данным. В моем приложении бизнес-уровень содержит то, что я называю классами обслуживания, а мой уровень доступа к данным содержит то, что я называю классами доступа к данным. Я использую Spring для внедрения зависимостей и управления транзакциями базы данных от бизнес-уровня вниз.
В последнее время меня интересует, является ли "нормальной" практикой внедрение классов обслуживания в другие классы обслуживания. Причина, по которой я спрашиваю, состоит в том, что у меня есть класс обслуживания, содержащий логику, которую я хотел бы использовать в других классах обслуживания, и я не хочу дублировать логику только для того, чтобы избежать внедрения класса обслуживания в другой класс обслуживания. Я беспокоюсь о циклических ссылках между классами обслуживания. Чтобы избежать этого, я собирался создать фасад, чтобы обернуть логику, которая мне нужна, но я решил сначала спросить сообщество.