Spring MVC에서 코드를 유지보수하기 위한 패키지 구조
Controller - Service - Repository - Domain 흐름
1. 사용자가 회원가입 요청 (POST /members/new?name=Jihoon)
2. Controller가 요청을 받음 (MemberController.create())
3. Service가 비즈니스 로직 실행 (MemberService.join())
4. Repository가 DB에 데이터 저장 (MemberRepository.save())
5. 응답을 반환하고, 화면에 출력됨
// Controller
@PostMapping("/members/new")
public String create(@RequestParam String name) {
Member member = new Member();
member.setName(name);
memberService.join(member); // Service 호출
return "redirect:/members";
}
// Service
public Long join(Member member) {
memberRepository.save(member); // Repository 호출
return member.getId();
}
// Repository
public Member save(Member member) {
store.put(member.getId(), member); // 데이터 저장
return member;
}
✔ Controller → 사용자의 요청을 받아 Service에 전달
✔ Service → 비즈니스 로직 실행 & Repository 호출
✔ Repository → DB와 연결해서 데이터 저장/조회
✔ Domain → 데이터를 표현하는 객체 (Entity, DTO, VO)