Controller를 통해서 외부 요청을 받고, Service에서 비지니스 로직을 만들고, Repository에서 데이터를 저장(정형화된 패턴)
@Controller
public class MemberController {
private final MemberService memberService;
@Autowired//스프링이 스프링 컨테이너에 있는 memberService와 연결시켜 주는 역할
public MemberController(MemberService memberService){//생성자로 한번 등록함
this.memberService=memberService;
}
}
//MemberSerivce.java
@Service
public class MemberService {
private final MemberRepository memberRepository;
}
//MemberRepository.java
@Repository
public class MemoryMemberRepository implements MemberRepository{
private static Map<Long, Member> store = new HashMap<>();//메모리 저장소
private static long sequence = 0L;
}
@Component는 스프링 빈에 등록하는 과정이고, @Autowired는 서로간의 연관 관계를 설정하는 역할
Tip) 스프링은 스프링 컨테이너에 스프링 빈을 등록할 때, 기본으로 싱글톤으로 등록한다. (유일하게 하나만 등록해서 공유) 따라서 같은 스프링 빈이면 모두 같은 인스턴스다.