Spring의 모듈
-
Spring-beans : 스프링 컨테이너를 이용해 객체를 생성하는 기능
-
Spring-context : 객체생성, 라이프사이클, 스키마 확장등의 기능
-
Spring-aop : AOP기능을 제공
-
Spring-web : REST 클라이언트 데이터 변환처리 및 서블릿 필드, 파일 업로드 지원등 웹개발에 필요한 기능을 제공
-
Spring-webmvc : 스프링 기반의 MVC프레임워크, 웹 애플리케이션을 개발하는데 필요한 Controller, View 구현을 제공
-
Spring-websocket : 스프링 MVC에서 웹소켓 연동을 제공
-
Spring-oxm : xml과 자바 객체간의 맵핑을 처리하기 위한 API 제공
-
Spring-tx : 트랜잭션 처리를 위한 레이어 제공
-
Spring-jdbc : JDBC 프로그래밍을 쉽게 할 수 있는 템플릿 제공
-
Spring-orm : 하이버네이트, JPA, MyBatis 등과 연동 제공
-
Spring-jms : jms서버와 메세지를 주고받을 수 있는 기능
-
Spring-context-support : 스케줄링, 메일, 캐시연동, 벨로시티등 부가기능 제공
스프링 MVC 프로젝트의 내부구조
MVC를 사용한다는 의미는 root-context.xml로 사용하는 일반 java영역(pojo)과 servlet-context.xml로 설정하는 web영역을 같이 연동하여 구동합니다.
-
root-context : 비지니스 로직처리를 위한 객체 를 설정해주며 service, dao 등 mybatis 설정 및 sql DB 접근에 관한 것을 제어합니다.
-
servlet-context : jsp 화면 view에 관한 객체를 설정합니다. controller, 파일업로드, intecptor(로그인) 처리등 URI에 관련된 설정을 하며 Web app에서 클라이언트의 요청을 받기 위한 제어설정 역할을 합니다.
스프링 MVC 프로젝트 로딩구조
web.xml
root-context
servlet-context
-
서버 구동시 web.xml 내에 등록된 속성들 확인
-
먼저 실행되는 web.xml의 contextLoaderListener 설정
-
root-context.xml의 정의된 리소스를 확인하고 객체(bean) 설정들이 동작한다. (console 창 info를 통해 확인 가능)
-
객체(bean)들은 스프링영역에 생성되고 객체들간의 의존성 처리
-
servlet.xml의 DispatcherServlet이란 설정이 동작
-
DispatcherServlet클래스는 스프링 MVC 구조에서 가장 핵심 역할을 하며 내부적으로 웹 관련 처리의 준비작업을 진행하는데 이때 사용하는 파일이 servlet-context.xml
-
이 과정속 등록되는 객체(bean)들은 기존에 생성된 객체(bean)와 연동
handleMapping은 Request 처리를 담당하는 컨트롤러를 찾기 위해 존재
-
handleMapping 인터페이스를 구현한 객체중 RequestMappingHandlerMapping은 @RequestMapping 어노테이션 기준으로 컨트롤러를 찾는다.
-
Controller를 찾으면 handlerAdapter를 이용해 Controller를 동작
-
Controller는 Request 처리하는 로직 작성 후 View에 전달
-
View는 Model이란 객체에 담아 전달하며 이때 Controller는 다양한 타입의 결과를 ViewResolver를 통해 처리하여 반환
-
ViewResolver는 View처리를 해석하는 역할을 하며 이때 설정은 servlet-context.xml에 정의된 InternalResourceViewResolver
-
View는 응답하는 데이터를 JSP, HTML등을 이용하여 생성하고 응답은 DispatcherServlet을 통해 전송
3-tier방식
-
Presentation
-
Business
-
Persistence Tier
Persentation (화면계층)
- 화면에 보여주는 기술 또는 스프링 MVC에서 JSP를 이용한 화면 구성
Business Tier(비지니스 계층)
- 비지니스 로직을 담는 영역, 고객의 요구사항을 반영하고 메소드 이름 또한 고객이 사용하는 용어를 채택하여 사용한다.
Persistence Tier(데이터 계층)
- 데이터를 어떤 방법으로 보관하고 다룰지에 대한 설계가 들어가는 계층, DB를 주로 사용하지만 네트워크호출이나 원격호출등 기술이 접목 가능
네이밍 규칙
-
Controller : 스프링 MVC에 동작하는 Controller 클래스를 설계시 사용
-
Service, ServiceImpl : 비지니스 영역을 담당하는 인터페이스는 Service, 인터페이스 구현 클래스는 ServiceImpl
-
DAO, Repository : DB에 data를 access 하는 객체 혹은 저장소 (예제 프로젝트는 Mybatis Mapper Interface 사용)
-
VO, DTO : 데이터를 담고 있는 객체를 의미 DTO는 데이터 수집의 성향이 강하고 VO는 ReadOnly 성향이 강하다
참고
'Spring' 카테고리의 다른 글
Spring @Annotation 종류와 이해 (0) | 2019.05.17 |
---|---|
mybatis와 스프링 연동 예제 (0) | 2019.04.30 |
IntelliJ로 스프링 gradle 프로젝트 설정 (0) | 2019.04.28 |
Spring 의 특징과 의존성 (0) | 2019.04.25 |