DI는 코드 간의 의존 관계를 관리하기 위한 디자인 패턴이다. 회원관리를 예를 들어 설명을 하자면, MemoryMemberRepository에는 기본적인 기능 (가입, 전체조회, ID로 검색, Name으로 검색 등등) MemberService에는 그 외에 비즈니스적인 기능(부가적인 기능)을 작성한다고 한다. 부가적인 기능을 이용할 때는 기본적인 기능을 이용할 때가 많다. 예를 들면 기본적인 기능에는 회원 정보가 저장되는 기능이 있다면 부가적인 기능에는 사용자가 입력한 내용이 중복확인이나 조건을 거쳐 모든 조건에 충족이 된다면 회원정보가 저장되는 기능이 작동하는 것이다. 회원 정보가 저장되는 기본적인 기능 @Override public Member save(Member member) { member.set..