728x90
반응형
@Component, @Repository, @Service, @Controller 설명 및 차이점
- @Component 는 스프링에서 관리하는 컴포넌트라는 것이다.
- @Repository, @Service, @Controller 는 컴포넌트의 하위 개념이다.
- 전부 Spring 에서 관리하는 컴포넌트들이며, @Repository 는 영속성을 담당하겠다는 것을 명시하는 컴포넌트
- @Service 는 비즈니스 로직을 담당하겠다는 컴포넌트.
- @Controller 는 Handler Mapping 을 위해 사용된다고 해야하나? DispatchServlet 에서 url 이 들어오면 해당 controller 의 RequestMapping 을 통해 맵핑시켜 줌.
- 이렇게 세분화하는 것이 유지 보수성이나 의미를 전달하기에 더 좋고. AOP 를 적용하기에 더 좋은 환경이다.
내용 보완
- Controller 는 Service 를 호출하고, Service 에서는 대개 Repository 를 호출한다.
- 좀더 자세히 보면, Controller 는 Service 의 flow 를 담담할 수 있고, Service 에서도 여러 Service 의 플로우를 담당한다고 할 수 있음.
- 이 부분을 나누는건 업무의 단위와 재활용성 측면이라고 생각됨.
- 연관성이 없는 서비스가 합쳐진다면 Controller 에서 호출하면서 처리하는게 좋을 수 있고.
- 큰 업무 Service (잘 변하지 않는) 안에 여러 Service 가 있는 경우 계속 재활용할 수 있고, 소스 파악 및 SRP 에도 좋겠지.
'Spring' 카테고리의 다른 글
[Spring] ResponseEntity 란? (0) | 2021.03.05 |
---|---|
Spring Async 처리 (@Async) (0) | 2021.02.21 |
Spring filter 와 interceptor 설명 (0) | 2020.12.23 |
web application spring starter 세팅 (0) | 2020.12.18 |
AOP 설명 (0) | 2020.11.02 |
댓글