✅의존성 주입(DI):

❗ 필요한 객체(의존성)는 직접 만들지 않고,외부(스프링)에서 넣어주는 것이 의존성 주입이야!

public class MemberService { private final MemberRepository memberRepository = new MemoryMemberRepository()

**📌의존성 주입으로 고친 코드 (**MemberService)

@Service
public class MemberService {
private final MemberRepository memberRepository; ->이건 멤버 변수(필드) 선언, 이 클래스 안에서 공통적으로 계속 쓰일 저장소 객체를 담을 변수.
@Autowired
public MemberService(MemberRepository memberRepository) { ->생성자 (스프링이 자동으로 MemberRepository 구현체를 넘겨줘서
그걸 받아주는 역할을 함)
    this.memberRepository = memberRepository; ->this.memberRepository는 위에서 선언한 멤버 변수
                                              ->memberRepository는 생성자의 매개변수(parameter)
   }
}

**📌의존성 주입으로 고친 코드 (**MemberRepository)

@Repository
public class MemoryMemberRepository implements MemberRepository { -> MemberRepository가 정의한 기능들을 MemoryMemberRepository가 실제로 만든다!
    private static Map<Long, Member> store = new HashMap<>();
    private static long sequence = 0L;
    ...

@Repository: