Spring MVC
2025. 6. 12. 17:12ㆍJava/Spring
- 어플리케이션을 세 가지 영역, 즉 모델(Model), 뷰(View), 컨트롤러(Controller)로 구분하여 작업을 분리하는 웹 어플리케이션 개발 방법론
- '로직과 화면을 분리'하는 스타일의 개발 방식인 모델 2 방식으로 처리
- 서로 간의 결합도를 최소화하고 유지보수성을 높이며 개발의 효율성을 향상

주요 컴포넌트
- DispatcherServlet
- 클라이언트의 모든 Request를 우선적으로 받아 처리하는 서블릿
- HandlerMapping에게 클라이언트의 요청을 처리할 Controller에 대한 검색을 요청
- HandlerMapping으로부터 클라이언트 요청과 매핑되는 핸들러 객체를 다시 리턴
- Request에 대해 실제 클라이언트의 요청을 어느 컨트롤러로 매핑시킬 것인지 배치하는 역할
- HandlerAdapter
- DispatcherServlet이 찾아낸 Controller의 Handler 메서드를 호출하는 역할
- 다양한 방식의 Controller(예:
@Controller어노테이션,Controller인터페이스)를 일관된 방식으로 처리 - Controller 구현 방식에 상관없이 DispatcherServlet이 유연하게 Controller 호출 가능하도록 추상화된 인터페이스 제공
// Handler Adapter가 제공하는 단순한 인터페이스 public interface HandlerAdapter { // handler == Controller boolean supports(Object handler); // "이 핸들러 처리할 수 있어?" ModelAndView handle(..., Object handler); // "처리해줘!" }
- HandlerInterceptor
- Request가 Controller에 매핑되기 전 앞단에서 부가적인 로직을 추가
- 여러 컨트롤러에서 같은 관심사를 갖고 반복되어 사용하는 코드를 제거하고, 다수의 컨트롤러에 동일한 기능을 제공
- 주로 세션, 쿠키, 권한 인증 로직에 많이 사용
- 해당 인터페이스는
preHandle(),postHandle(),afterCompletion()이라는 세 메소드를 제공

- Controller
- 사용자의 요청과 Model과 View 사이에서 상호 작용을 관리하는 컴포넌트
- Request에 대해 어떤 로직(Service)으로 처리할 것인지를 결정 및 호출
- Service Bean을 스프링 컨테이너로부터 주입
- ViewResolver
- Service (Business Logic)
- 알맞은 정보를 가공하는 과정 → 비즈니스 로직을 수행한다.
- '비즈니스 로직을 수행'하고 데이터베이스에 접근하는 DAO를 이용해서 '결과값'을 받아온다.
- Repository (Data Access)
- Entity에 의해 생성된 DB에 접근하는 메서드에 대한 인터페이스
- DB
- Model
- View
장점
- 분리된 계층 구조를 통한 유지보수 및 확장성 향상
- 느슨한 결합: 인터페이스를 통한 의존성 주입
- 컴포넌트 기반 아키텍처로 높은 재사용성 및 테스트 용이성
참고자료
'Java > Spring' 카테고리의 다른 글
| Spring Bean (1) | 2025.06.09 |
|---|