Custom Repository
오늘 repository 구조를 정리하며 얘기 나왔던 custom repository 관련해서 공식 문서에 되게 잘 정리되어 있는 걸 확인할 수 있었다!
Impl 접미사를 붙이는 게 핵심이라는데 제일 중요한 부분만 요약하자면,
CustomizedUserRepository 인터페이스와 이를 구현하는 CustomizedUserRepositoryImpl 클래스를 만드는데,
이때 Impl 접미사를 붙여야 Spring Data가 사용자 정의 리포지토리 구현으로 인식해 찾아온다고 합니다.
The most important part of the class name that corresponds to the fragment interface is the Impl postfix.
If you use namespace configuration, the repository infrastructure tries to autodetect custom implementation fragments by scanning for classes below the package in which it found a repository. These classes need to follow the naming convention of appending the namespace element’s repository-impl-postfix attribute to the fragment interface name. This postfix defaults to Impl. The following example shows a repository that uses the default postfix and a repository that sets a custom value for the postfix:
우리팀에서 사용하고 있는 CrudRepository 도 예시로 나왔다.
interface UserRepository extends CrudRepository<User, Long>, CustomizedSave<User> {
}
interface CustomizedSave<T> {
<S extends T> S save(S entity);
}
class CustomizedSaveImpl<T> implements CustomizedSave<T> {
public <S extends T> S save(S entity) {
// Your custom implementation
}
}
Plain Text
복사
(알쓸프잡으론, 내가 궁금했던 점인데 커스텀 구현이 기본 구현보다 높은 우선순위를 가진다고 한다)
Custom implementations have a higher priority than the base implementation and repository aspects
기타 참고