1. layered architecture를 사용하는 이유
2. Spring Layered architecture 구조
1) Presentation Layer
- Spring MVC 객체를 말한다.
- 프론트 컨트롤러(DispatcherServlet), 컨트롤러, 뷰, 모델이 포함된다.
- 실제 비지니스 로직을 수행하는 컴포넌트
- 컨트롤러(presentation layer)에서 요청을 보내면 DAO(data access layer)를 이용해 실제로 비지니스 로직을 수행한다.
- 보통 하나의 비지니스 로직은 하나의 트랜잭션으로 동작(ACID 특징 가짐)
- DB에 값을 저장하거나 가져오기 위해 JDBC, Mybatis, JPA 등을 사용해 구현한 DAO
① 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 에게 요청이 처리된 데이터를 화면에 출력한다.
- @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 |