코딩항해기

[Spring] @어노테이션 의존성 주입 (Repository, Service, Controller) 본문

Spring

[Spring] @어노테이션 의존성 주입 (Repository, Service, Controller)

miniBcake 2024. 10. 4. 19:32

 

 

 

지난번에 의존성 주입 어노테이션 중 Component에 대해 정리했다.

컨테이너가 관리하는 객체라는 것을 알려주는 가장 기본적인 어노테이션이기 때문에, 전부 Component를 사용할 수도 있다. 그러나 용도에 따라 별도의 어노테이션으로 구분짓는 것이 명시적으로 나타내기 좋기 때문에 구분해서 사용한다.

즉, 세 어노테이션 모두 Component의 역할(컴포넌트 스캔 가능/컨테이너 Bean 등록)을 수행한다.

 

@Repository

Persistence/Data Access Layer

Repository는 DB에 접근하는 코드라는 의미로 일반적으로 DAO에 많이 사용된다. 실무에서는 DAO라는 표현을 잘 적어두지 않기 때문에 Repository 어노테이션으로 이 객체가 DAO라는 것을 알 수 있다.

 

@Service

Business Layer

DB에 접근하는 코드는 Repository에 위임하며 비즈니스 로직과 관련된 모든 코드에 사용한다. ServiceImpl 객체에 사용된다.

 

@Controller

Spring MVC Presentation Layer

클라이언트로 부터 요청이 왔을 때, dispatcherservlet이 handleradapter를 통해 컨트롤러를 찾기 위해 '컨트롤러' 역할을 한다고 명시할 수 있는 어노테이션이다.