Spring Data Rest를 사용할 때 @Repository를 구성 요소 검색에서 제외하는 방법
스프링 부트 프로젝트에서 일부 저장소를 구성 요소 스캔에서 제외해야 하는 문제가 있습니다.
일부 엔티티와 일부 리포지토리(JpaReposities)가 포함된 라이브러리가 있습니다.어떤 이유에서인지 저는 테스트자가 엔티티에 빠르게 액세스할 수 있도록 작은 Spring Boot Data Rest 애플리케이션을 구현했습니다.따라서 PagingAndSortingRespository를 확장하고 @RespositoryRestResource로 주석이 달린 저장소를 구현했습니다.
응용 프로그램이 시작되면 모든 저장소가 검색되고 사용 가능하게 됩니다.데이터 휴식 저장소만 사용할 수 있도록 하려면 원하지 않는 저장소를 제외하도록 스캐너에 구성 요소에 주석을 달았습니다.근데 이게 안 돼요.액츄에이터 원두 엔드포인트와 내가 무엇을 하든지 확인했습니다 - 어떤 저장소도 제외되지 않습니다.
이 문제를 설명하기 위해 https://github.com/magomi/springboot-restdata-repoloading 라는 간단한 데모 애플리케이션을 만들었습니다.
DataRepository를 제외하기 위해 다음 두 가지 방법을 시도했습니다.
// exclude V02
@SpringBootApplication
@ComponentScan(excludeFilters = {
@ComponentScan.Filter(type = FilterType.ASSIGNABLE_TYPE, classes = {
DataRepository.class})
})
그리고.
// exclude V01
@SpringBootApplication(exclude = { DataRepository.class })
성공하지 못했습니다./beans endpoint(스프링 부트 액추에이터 제공)를 호출하면 항상 다음과 같이 표시됩니다.
{
bean: "dataRepository",
aliases: [ ],
scope: "singleton",
type: "org.codefromhell.test.repoloading.DataRepository",
...
},
{
bean: "dataApiRepository",
aliases: [ ],
scope: "singleton",
type: "org.codefromhell.test.repoloading.api.DataApiRepository",
...
},
리포지토리 인터페이스를 통해 주석을 사용할 수 있습니다.문서에서:
저장소 인터페이스가 픽업되지 않도록 하여 결과적으로 인스턴스가 생성되는 것을 제외하는 주석입니다.
이는 일반적으로 사용자 지정 리포지토리 기본 클래스와 함께 모든 리포지토리에 확장 기본 인터페이스를 제공하여 해당 중간 인터페이스에 선언된 메서드를 구현할 때 사용됩니다.이 경우 일반적으로 콘크리트 저장소 인터페이스를 중간에서 파생하지만 중간 인터페이스에 대한 Spring bean을 생성하지는 않습니다.
왜냐하면 그것은 저장소이고 엄밀하게는@Component
, 를 추가하여 제외해야 합니다.@EnableJpaRepositories
귀하의 애플리케이션에 다음을 제공합니다.
@SpringBootApplication
@EnableJpaRepositories(excludeFilters = {
@ComponentScan.Filter(type = FilterType.ASSIGNABLE_TYPE, classes = {
DataRepository.class})
})
public class ApiApplication {
public static void main(String[] args) {
SpringApplication.run(ApiApplication.class, args);
}
}
언급URL : https://stackoverflow.com/questions/41046736/how-to-exclude-a-repository-from-component-scan-when-using-spring-data-rest
'programing' 카테고리의 다른 글
요소를 사용합니다.AddClass를 사용하여 'Class' 역할을 하도록 제한된 각도 js 지시문을 추가합니다. (0) | 2023.10.28 |
---|---|
자바 결과 집합을 JSON으로 변환하는 방법은? (0) | 2023.10.28 |
MySql: MyISAM vs.이노 DB! (0) | 2023.10.28 |
컨트롤러 asp.net -core에서 최신 문화 가져오기 (0) | 2023.10.28 |
PHP가 업로드된 파일을 임시 위치에 저장하는 이유와 이점은 무엇입니까? (0) | 2023.10.28 |