본문 바로가기
Spring

@Component, @Repository, @Service, @Controller 설명 및 차이점

by 무대포 개발자 2020. 12. 25.
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

댓글