스프링은 하나의 Layer가 여러가지 하는 일을 좋아하지 않는다.
따라서 각자 하나의 layer는 한 가지 일을 해야한다.
layer의 역할과 특징을 간단히 적어보면 이렇다.
- controller (web)
- 외부 요청과 응답에 대한 영역
- 요청 url에 따라 view, mapping 처리
- @Autowired Service를 통해 service의 method를 이용
- ResponseEntity(DTO)를 body에 담아 Client에 반환 ( Object type 일 경우 엔 ResponseController 를 사용해도 된다. )
- Service
- Controller 과 Repository 사이에 존재
- @Service Annotation 사용
- @Autowired Repository를 통해 repository의 method를 이용
- 적절한 Business Logic 처리
- DAO로 DB에 접근 한 후 DTO로 데이터를 받은 다음 , Business Logic을 처리해 적절한 데이터를 반환
- Repository(dao)
- 실제로 DB에 접근하는 객체 ( Data Access)
- Service와 DB를 연결하는 객체
- SQL를 사용 , DB에 접근한 후 CRUD API를 제공
- DTO
- Client <-> Controller , Controller <-> Service , Service <-> Repository 간의 데이터를 주고 받을 때 사용하는 객체
- Logic 은 선언되지 않고 객체만 선언된다.
'스프링' 카테고리의 다른 글
분산 시스템에서 메시지 안전하게 다루기 (0) | 2023.12.22 |
---|---|
쿠폰 발급 동시성 제어하기, 성능테스트로 성능 개선하기 (0) | 2023.11.29 |
스케줄러와 Transactional 테스트 코드에서 생긴 문제 해결하기 (0) | 2023.10.09 |
Spring WebSocket Ping / Pong (2) | 2023.03.27 |
WAS, Servlet 용어 정리 (0) | 2023.01.04 |