• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    미해결

질문이 있습니다!

22.09.12 23:27 작성 조회수 167

1

이번 강의에서 BookQuerydslRepository 클래스 작성할 때

@Component 어노테이션을 사용하셨는데요!

 

기존에 스프링 사용할 때는 @Repository 어노테이션을 주로 사용하였는데 @Component를 사용하는 이유가 있을까요?

 

제가 알기로는 @Repository 어노테이션을 사용하면 예외 발생시 JPA예외가 스프링 예외로 변환되어 발생하는 것으로 알고있습니다.

감사합니다.

답변 1

답변을 작성해보세요.

5

안녕하세요, 연어포케님~!!! 크으~ 매우매우 좋은 포인트이십니다!!! 😊

저는 역설적으로 @Repository 어노테이션을 사용하면 자동으로 예외가 변환되어 잘 사용하지 않는 편입니다...!

 

아시다시피, Querydsl을 적극적으로 활용하게 되면 Spring Data JPA와 다르게 함수를 직접 작성하게 되는데요! 그러다보니 Repository 단에서도 business 관련 예외를 던지기도 하고 Repository 단에서 던져질 것으로 생각했던 예외를 ControllerAdvice로 처리하거나 상황에 따라 Retryable을 걸기도 했었어요!

그런데 이때 @Repository 어노테이션을 붙이게 되면 이러한 처리 자체가 애매해지니 https://namocom.tistory.com/1025 와 같이 추가적인 작업을 해주어야 하는데 개인적으로는 번거로움이 조금 있더라고요 😢

또한 Repository의 예외 변환기를 100% 파악하지 못하고 있어 (어떤 예외가 어떻게 나오는지, 향후 버전에서는 혹시 어떤 예외가 추가되거나 제외될지 등등) 아예 속편하게 @Component를 사용하고 있었습니다 ㅎㅎㅎㅎ 역시 공부할게 참 많네요~!! 👍

 

다행히 @Component를 사용하며 1~2년 정도 지났는데, 아직까지는 이로 인한 큰 문제는 발생하지 않았어요! 너무 좋은 포인트 짚어주셔서 감사드리며 또 궁금한 점이 있으시다면 편하게 말씀해주세요~!!!

감사합니다 ㅎㅎㅎㅎㅎ 🙏🙏