728x90
MVC는 Model-View-Controller의 약자로, 애플리케이션을 세 가지 역할로 분리하는 디자인 패턴이야.
각 컴포넌트의 역할
Model (모델)
- 데이터와 비즈니스 로직을 담당
- 데이터베이스와 상호작용하고, 데이터의 상태를 관리
- Spring Boot에서는 Entity, Repository, Service 계층이 해당돼
View (뷰)
- 사용자에게 보여지는 UI 부분
- Model의 데이터를 받아서 화면에 표시
- 백엔드 API 서버에서는 주로 JSON 응답이 View 역할을 해
Controller (컨트롤러)
- 사용자의 요청을 받아서 처리
- Model과 View 사이의 중재자 역할
- 요청을 받으면 적절한 Service를 호출하고, 결과를 반환
왜 사용할까?
1. 관심사의 분리 (Separation of Concerns)
- 각 계층이 독립적이라 코드 수정이 쉬워져
- UI 변경이 비즈니스 로직에 영향을 주지 않음
2. 유지보수성
- 각 부분을 독립적으로 수정 가능
- 버그 추적이 쉬워져
3. 재사용성
- 같은 Model을 여러 Controller나 View에서 사용 가능
4. 테스트 용이성
- 각 계층을 독립적으로 테스트할 수 있어
Spring Boot에서의 실제 사용 예시
// Model - Entity
@Entity
public class Todo {
@Id @GeneratedValue
private Long id;
private String title;
private boolean completed;
}
// Model - Repository
public interface TodoRepository extends JpaRepository<Todo, Long> {
}
// Model - Service (비즈니스 로직)
@Service
public class TodoService {
private final TodoRepository todoRepository;
public Todo createTodo(TodoCreateDto dto) {
Todo todo = new Todo();
todo.setTitle(dto.getTitle());
return todoRepository.save(todo);
}
}
// Controller
@RestController
@RequestMapping("/api/todos")
public class TodoController {
private final TodoService todoService;
@PostMapping
public ResponseEntity<TodoResponse> createTodo(@RequestBody TodoCreateDto dto) {
Todo todo = todoService.createTodo(dto);
return ResponseEntity.ok(new TodoResponse(todo)); // View 역할
}
}
실제 흐름
- 클라이언트가
POST /api/todos요청 - Controller가 요청을 받아서 DTO로 변환
- Service(Model)가 비즈니스 로직 수행
- Repository(Model)가 DB에 저장
- Controller가 결과를 JSON으로 변환해서 응답 (View)
728x90
'기술 학습' 카테고리의 다른 글
| 엔드포인트란? (0) | 2026.02.02 |
|---|---|
| express.Router() 란? (0) | 2026.01.29 |
| Express To-Do List 프로젝트 코드 리뷰 (0) | 2026.01.29 |
| XSS(Cross-Site Scripting) 취약점이란 (0) | 2026.01.29 |
| Fetch API란 (0) | 2026.01.28 |