Какая инъекция зависимостей уместна в шаблоне MVC?

#spring-boot #spring-mvc #model-view-controller #spring-data-jpa

Вопрос:

Позвольте мне объяснить ситуацию на примере.

В настоящее время существуют команды и участники в качестве Моделей.

 class Member {
  String name;
  Team team;
}
class Team {
  String teamName;
}
 

Существует MemberRepository, который может получить доступ к базе данных участников.

 public interface MemberRepository {
  public Member findByName(String name);
}
 

Служба участников, которая может запросить существование участника.

 @Service
Memberservice {
    @Autowired
    MemberRepository memberRepository;
    
    public Member searchMember(String name) {
       return memberRepository.findByName(name);
    }
}
 

В этой ситуации При создании TeamService
Если вам нужно узнать о членах , какой из них лучше ввести, Memberservice или MemberRepository?

Ответ №1:

Следуя принципу единой ответственности, вы должны стремиться к тому, чтобы ваши занятия были сосредоточены на выполнении нескольких связанных с этим задач. Имея это в виду, MemberService должен быть единственным, кто управляет участниками, и это включает в себя быть единственным, кто касается MemberRepository. Сказав это, вы обязательно должны ввести MemberService.

Как правило, вам следует избегать использования нескольких служб, использующих один и тот же репозиторий. Если вы этого не сделаете, вы можете получить код спагетти. Это означает, что Службы должны «общаться» между собой.

Комментарии:

1. Спасибо за ответ! Однако, вводя зависимости между службами, что вы думаете о зависимостях, которые могут вызывать циклические ссылки?

2. Циклические ссылки обычно означают, что ваш дизайн класса не является правильным. Это может быть не совсем верно для каждой отдельной ситуации, но. обычно это намек на то, что вы должны его изменить. Если вы приведете пример, я могу попытаться предложить некоторые изменения.