티스토리 뷰
ItemRepositoryCustom
이 부분인데
//리포지토리 특이한 상속!!! -- 궁금...
// 형제쪽에 드러나 있는 애가 있고 숨겨진 애가 있다.
// 형제끼리는 원래 형변환이 되지 않는다. (Impl이라서 가능)
@Transactional(readOnly = true)
public Page<Item> getAdminItemPage(ItemSearchDto itemSearchDto, Pageable pageable) {
return itemRepository.getAdminItemPage(itemSearchDto, pageable);
} // 원래 itemRepository.getAdminItemPage는 죽어야 하는데, 다른 자식이 구현하고 있으므로 사용 가능.
// 스프링이 해주는 특이한 형태.
/*
Spring 로딩 시 접미사가 impl인 것을 찾습니다.
interface 구현 안 되어 있을 시 접미어가 impl과 결합되어서 형제인 다른 인터페이스를 통해서 impl에 구현되어있는 메서드가 호출된다.
*/
기본적으로 우리는 리포지토리를 JPA 리포지토리를 상속받아 사용한다.
그런데 그렇지 않고 내가 custom한 리포지토리를 만들고 싶을 때(또는 그래야만 할 때)가 생긴다.
기본적으로 인터페이스이니까 아무것도 구현이 안 되어 있는 게 맞는데, JPA 리포지토리는 기본적으로 구현되어 있는 메서드(구현체가 존재)가 몇 개 있음.
내가 직접 제공을 하겠다 할 때는 위처럼 Impl이라는 접미사를 붙여야 스프링이 찾아서 아 얘의 구현체가 이거구나 매칭을 시켜줌. 스프링에게 내가 직접 알려줘야 한다.
별도 구현 없이 impl만 뒤에 붙으면 구현체로 스프링이 인식한다. 일종의 컨벤션.
728x90
반응형
'[개발] - Spring > SpringShop' 카테고리의 다른 글
shop 구현 (11) 메인 페이지 만들기 (0) | 2023.07.19 |
---|---|
shop 구현 (10) 상품 관리하기 페이지 (0) | 2023.07.15 |
shop 구현 (8) 상품 수정하기 / 변경감지 (0) | 2023.07.14 |
shop 구현 (7) 상품 등록 (0) | 2023.07.13 |
shop 구현 (6) Auditing (0) | 2023.07.12 |
Comments