본문 바로가기
카테고리 없음

Spring MVC 패턴

by 승현0604 2023. 5. 20.

SPring는 java안에있는 웹 프레임워크로 JAVA언어기반으로 이루어져있다. 

Java를 이용한 기술에는 JSP, MyBatis, JPA등 여러가지가 있는데 이 기술들을 더 편하게 사용하기 위해서 만들어진것이 Spring 이라고하면 된다 

결론적으로 Spring는 Java기술들을 더 쉽게 사용할 수 있게 해주는 오픈소스 프레임워크이다.

 

그렇다면 MVC구조를 한번보자면

DIspatcherServlet를 중심으로 서블릿을 분배하는 역할을 해주고있다

 

처음에는 Client에서 Url을 호출을 해주는데 매핑을 통해서 핸들러를 조회를 해준다

Handler : 클라이언트의 요청을 처리하는 처리자라고한다. Spring에서는 Controller클래스를 의미하기도 한다 

Controller 클래스에 있는 @Getmapping, @PostMapping같은 애너테이션이 붙어있는 메서드들을 핸들러 메서드라고 부른다

 

핸들러 매핑을 끝낸다면 핸들러 어댑터 목록역할을 수행하여 핸들러 어댑터를 조회해줍니다

Spring에서는 객체지향의 설계를 SpringMvc에 통합하기 위해서 handlerAdapter를 사용을 한다.

좀더 구체화하자면 핸들러 매핑을 하면서 찾은 핸들러를 처리를 해주는 역할을 한다고 볼 수 있다

 

그리고 찾은 핸들러를 어댑터를 통해 내부로직을 실행을 시켜주고 ModelAndView에 담아서 반환을 해준다

 

다음은 호출인데 ViewResolver를 이용해서 응답으로 사용할 View를 반환하고 View를 클라이언트에 반환을 시켜준다고 생각하면된다.

 

이 역할들을 전부다 이어주는 애는 서블릿의 역할을 분배시켜주는 DispatcherServlet라는 클래스인데

 

Servlet기반의 웹 서비스인 경우 Servlet Container에서 요청 URL에 맞는 서비스를 제공하기 위해 URL Mapping과 Servlet을 정의해서 추가해야한다. 그리고 뷰와 모델, 비즈니스 로직이 하나의 서블릿이 관리하면 관심사가 분리되지 않는다. 즉 역할 구분이 되지 않아 유지보수가 어려워진다.

이러한 문제를 해결하기 위해 FrontController패턴으로 하나의 서블릿에서 모든 요청을 받아드리고 각 요청에 맞는 핸들러에게 dispatch해서 역할을 위임시키게 된다.

 

이런 역할을 하는 것이 Spring의 DispatcherServlet이다.