해결된 질문
작성
·
353
답변 1
1
강의자 한정헌입니다.
강의에서 헥사고널 아키텍처,도메인 모델 에 중심을 두다보니 스프링 부트에 대해서는 자세히 설명이 못된 듯 합니다.양해해 주시면 감사하겠고요. 설명드리면
언급하신 Resposity 인터페이스가 RentalCardOutputPort 같은 것이라면 아래 사유에 의해 명명을 했습니다.
저장소 인터페이스의 @Repository 주석은 이 인터페이스가 Spring Bean으로 처리되어야 함을 Spring 프레임워크에 알립니다. 그런 다음 Spring은 이 Bean의 라이프사이클을 관리하고, 트랜잭션을 처리하고, 데이터 액세스와 관련된 기타 기능을 적용할 수 있습니다.
또한 인터페이스 목적에 대한 마커 역할을 하여 데이터 액세스를 담당하는 저장소임을 분명히 합니다.
저장소 구현 클래스의 @Repository 주석은 비슷한 목적으로 사용됩니다. 이는 이 클래스가 저장소 Bean이고 Spring 컨테이너에 의해 관리되어야 함을 Spring에 나타냅니다.
두 위치 모두에서 @Repository를 사용하면 문제를 명확하게 분리하는 데 도움이 됩니다. 인터페이스는 데이터 액세스를 위한 계약 또는 API를 정의하고, 구현은 데이터 소스와 상호 작용하기 위한 실제 논리를 제공합니다. 둘 다 @Repository로 주석을 달면 이러한 구성 요소가 데이터 액세스와 관련되어 있으므로 관리해야 한다는 점을 Spring에 명시적으로 알 수 있습니다.
그런데 답변을 드리다 보니 아마도 spring DATA Repository 인터페이스를 언급하시는 것 같기도 하네요. 움. spring data 의 경우에는 @Repository를 작성하지 않아도 자동감지 되고 등록됩니다. 그러나 명시적으로 표현하는 까닭은 이 인터페이스가 저장소 역할을 수행한다는 것을 보여주는 마커 주석의미가 있다고 보시면 될 것 같습니다.
감사합니다.