인프런 커뮤니티 질문&답변

박훈희님의 프로필 이미지

작성한 질문수

스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술

컴포넌트 스캔과 자동 의존관계 설정

컴포넌트 스캔에서

작성

·

214

1

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.

1. 강의 내용과 관련된 질문을 남겨주세요.
2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.
(자주 하는 질문 링크: https://bit.ly/3fX6ygx)
3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.
(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)

질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.
=========================================
[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? (예/아니오)
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)
3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)

[질문 내용]

컴포넌트 스캔에서 Service와 Repository 클래스 위에 @Service 와 @Repository 써줄때 @Component를 써도 빈에 등록되고 상관없다고 하셨는데 @Service와 @Repository로 쓰면 한눈에 봤을때 서비스와 리포지토리구나 알 수 있어서 가독성을 위해 쓰는건가요? 아니면 @Component보다 서비스나 리포지토리에 사용할 수 있는 다른 기능이 있는건가요?

답변 2

1

안녕하세요. 박훈희님, 공식 서포터즈 David입니다.

 

큰 차이는 없으며 레이어(Controller, Service, Repository)를 구분하기 위한 마커로 사용합니다.

예를들어 서비스 레이어에만 특별한 로직을 걸어주고 싶다면 AOP를 사용할 때 Service 애노테이션만 찾게끔 하면 되겠죠.

 

이외에 

@Controller의 경우 스프링에서 감지하여 핸들러로 등록합니다. @Controller 대신 @Component로 바꾸시고 요청보내시면 페이지 못 찾는다고 나옵니다. 이 부분은 MVC 1의 스프링 MVC - 시작하기편에 나옵니다.

@Repository의 경우 예외 번역에서 사용됩니다. 아래 링크 참고해주세요.

https://docs.spring.io/spring-framework/docs/current/reference/html/data-access.html#orm-exception-translation

@Service의 경우 아직 특별한 내부 사용은 없는 걸로 알고 있습니다.

 

감사합니다.

0

박훈희님의 프로필 이미지
박훈희
질문자

답변 감사드립니다