본문 바로가기

dev/Spring

Spring Layered Architecture

1. layered architecture를 사용하는 이유




2. Spring Layered architecture 구조

1) Presentation Layer

  • Spring MVC 객체를 말한다.
  • 프론트 컨트롤러(DispatcherServlet), 컨트롤러, 뷰, 모델이 포함된다. 
2) Service Layer(Business Layer)
  • 실제 비지니스 로직을 수행하는 컴포넌트
  • 컨트롤러(presentation layer)에서 요청을 보내면 DAO(data access layer)를 이용해 실제로 비지니스 로직을 수행한다.
  • 보통 하나의 비지니스 로직은 하나의 트랜잭션으로 동작(ACID 특징 가짐)
3) Data Access Layer(Repository Layer)
  • DB에 값을 저장하거나 가져오기 위해 JDBC, Mybatis, JPA 등을 사용해 구현한 DAO


3. Spring Layered architecture 동작 과정 예시

① Client 에서  요청이 들어오면 먼저 Presentation Layer 에서 

     DispatcherServlet 이 HandelerMapping 을 통해서 Controller 에게 Client 요청이 무엇인지 알리고,

     Controller 는 Client 요청을 처리를 Business Layer 에게 요구한다.

     이 때, Business Layer 에 넘겨줄 데이터(Client 가 요청한 데이터)가 있으면 Domain Object 에 담는다.

 

② Business Layer 는 Presentation Layer 와 Interface 를 통해서 통신하며,

     Client 요청을 적절히 처리한 후 데이터베이스에 데이터를 저장하거나 데이터를 꺼내기 위해 Data Access Layer 에 요청한다.

     이 때, 비지니스 로직을 수행하기 위해 데이터가 필요하면 Domain Object 에서 가져오고, 

     Data Access Layer 넘겨줄 데이터가 있으면  Domain Object 에 담는다.


③ Data Access Layer 역시 Business Layer 와 Interface 를 통해서 통신하며,

     Business Layer 의 요청을 처리한다.

     이 때, 데이터베이스에 저장하기 위해 필요한 데이터를 Domain Object 에서 가져오고,

     데이터베이스에서 데이터를 가져와 반환할 데이터가 있다면 Domain Object 에 저장한다.


④ 모든 처리가 끝나면 Controller 는 Client 요청이 처리된 데이터와 사용할 View 정보를 

     Domain Object 에서 가져와서 ModelAndView에 담는다. 

     그리고 ModelAndView 객체를 DispatcherServlet 에 넘긴다.


⑤ ModelAndView 객체가 DispatcherServlet 에 전달되면, 

     DispatcherServlet 은 ViewResolver 를 통해서 View 를 선택하고 

     Client 에게 요청이 처리된 데이터를 화면에 출력한다.


4. Spring MVC에서 Layered architecture 구현

  • @Controller
  • @Service
  • @Repository
  • @Transactional


[참조]

Spring Layered Architecture : https://tinkerbellbass.tistory.com/9

'dev > Spring' 카테고리의 다른 글

상태 정보 유지(쿠키, 세션)  (0) 2019.02.20
spring mvc 프로젝트 구조  (0) 2019.02.19
Java web MVC  (0) 2019.02.15
DTO/DAO, ConnectionPool  (0) 2019.02.15
AOP  (0) 2019.02.14