Java/spring

Spring 계층 구조

스프링은 여러 가지 계층을 갖는 계층 구조로 이루어져 있다. 각 계층들은 웹을 구현하기 위해 자신이 맡은 역할을 수행하며, 아래 그림과 같은 구조로 구성되어 있다.

 

스프링 웹 계층 구조

각 계층들의 역할을 하나씩 살펴보자.

 

  • Web Layer
    • 흔히 사용하는 컨트롤러(@Controller)나 JSP와 같은 뷰 템플릿 영역이다.
    • 이외에도 필터(@Filter), 인터셉터, 컨트롤러 어드바이스(@ControllerAdvice) 등 외부 요청과 응답에 대한 전반적인 영역을 다룬다.

  • Service Layer
    • @Service 어노테이션을 사용하는 영역이다.
    • Controller와 DAO[각주:1]의 중간 영역에서 사용되며, @Transactional이 사용되어야 하는 영역이다.
    • 트랜잭션, 도메인 간의 순서를 보장해준다.

  • Repository Layer
    • DB와 같은 데이터 저장소에 접근하는 영역이다. DAO의 역할을 수행한다.

  • DTOs
    • DTO[각주:2]가 저장된 영역을 의미한다.
    • 뷰 템플릿 엔진에서 사용될 객체나, Repository Layer에서 결과로 넘겨준 객체가 속한다.

  • Domain Model
    • 도메인이라 불리는 개발 대상을 모든 사람이 동일한 관점에서 이해할 수 있고 공유할 수 있도록 단순화 시킨 개념이다.
    • 택시 앱의 경우 배차, 탑승 요금 등이 모두 도메인이 될 수 있다.
    • @Entity가 사용된 영역이 도메인 모델이다. 하지만 DB와 연관되어 있지 않은 VO[각주:3]와 같은 값 객체들도 이 영역에 해당될 수 있다.
    • 비즈니스 로직 처리를 담당한다.

 

 

참고 도서 : 스프링 부트와 AWS로 혼자 구현하는 웹 서비스 - 이동욱

 

  1. Data Access Object의 약자로, 실질적으로 DB에 접근하는 객체를 의미한다. 효율적인 커넥션 관리와 보안을 위해 사용한다. [본문으로]
  2. 계층 간의 데이터 교환을 위한 객체, 데이터를 객체로 변환한다. [본문으로]
  3. DTO와 동일한 개념이지만, read only 속성을 가진다. [본문으로]

'Java > spring' 카테고리의 다른 글

4/19 정리  (0) 2021.04.19
Spring batch - 1. 기본 개념  (0) 2021.02.05
@Controller vs @RestController  (0) 2021.01.26