MVC
by 볼빵빵오춘기MVC
- Model-View-Controller 패턴의 약자로, 소프트웨어 디자인 패턴 중 하나
- 애플리케이션의 구성 요소를 세 가지 주요 역할로 분리하여 애플리케이션의 구조를 체계적으로 유지하고 유지보수성을 높이며, 개발과 테스트를 용이하게 함.
구성요소
Model (모델)
- 애플리케이션의 데이터와 비즈니스 로직을 관리.
- 데이터베이스와 상호작용하고, 비즈니스 규칙을 구현하며, 상태를 저장.
- ex) 데이터베이스의 테이블과 매핑되는 엔티티 클래스, 데이터 전송 객체(DTO), 서비스 계층의 비즈니스 로직.
View (뷰)
- 사용자 인터페이스를 담당하며, 데이터를 표시하고 사용자로부터 입력을 받음.
- 모델의 데이터를 화면에 렌더링하고, 사용자로부터의 입력을 컨트롤러에 전달.
- ex) HTML, JSP, Thymeleaf 템플릿, Angular, React 컴포넌트.
Controller (컨트롤러)
- 사용자 입력을 처리하고, 모델과 상호작용하여 데이터를 업데이트하며, 뷰에 데이터를 전달.
- 요청을 받아 적절한 서비스를 호출하고, 비즈니스 로직을 수행한 후 결과를 뷰에 전달.
- ex) Spring MVC의 컨트롤러 클래스, REST API의 엔드포인트.
동작 흐름
- 클라이언트 요청: 사용자가 특정 URL에 접근하거나 특정 동작을 수행하면, 클라이언트 요청이 발생.
- 컨트롤러: 컨트롤러는 이 요청을 받아들이고, 요청을 처리할 적절한 로직을 호출합니다. 이때 컨트롤러는 필요한 데이터를 모델로부터 가져오거나 모델을 통해 데이터를 수정.
- 모델: 모델은 비즈니스 로직을 수행하고 데이터베이스와 상호작용하여 필요한 데이터를 가져오거나 업데이트함.
- 뷰: 컨트롤러는 모델로부터 받은 데이터를 뷰에 전달합니다. 뷰는 이 데이터를 이용해 사용자에게 정보를 표시.
- 응답: 뷰는 생성된 화면을 클라이언트에게 반환하여 사용자에게 결과를 보여줌.
장점
- 유지보수성: 각 구성 요소가 독립적이기 때문에, 하나의 요소를 수정하더라도 다른 요소에 미치는 영향을 최소화.
- 재사용성: 비즈니스 로직과 사용자 인터페이스를 분리하여, 재사용 가능한 컴포넌트를 만들 수 있음.
- 테스트 용이성: 모델, 뷰, 컨트롤러를 독립적으로 테스트할 수 있어, 단위 테스트와 통합 테스트를 용이하게 할 수 있음.
참고링크
https://developer.mozilla.org/ko/docs/Glossary/MVC
https://m.blog.naver.com/jhc9639/220967034588
'👩🏻💻 About 프로그래밍 > spring' 카테고리의 다른 글
스프링 시큐리티(Spring Security) vs 전통적인 방식 (0) | 2024.07.10 |
---|---|
MVC1과 MVC2 비교 (0) | 2024.07.10 |
DTO vs VO, DTO와 VO의 차이점, 언제 VO를 사용하고 언제 DTO를 사용하는가? (0) | 2024.07.08 |
Spring 패키지 구조(feat. Controller, DTO, DAO Service, Repository, Entity, Vo) (0) | 2024.07.08 |
스프링부트 구조 및 각 단계별 역할 (0) | 2024.07.08 |
블로그의 정보
Hello 춘기's world
볼빵빵오춘기