왜 SpringBoot@Componentscan 을 신 중 히 사용 하 라 고 했 어 요?

장면 이 재현 되다.
필터(Filter)를 통일 적 으로 만 들 기 위해 다른 프로젝트 에 필 터 를 만 들 고 jar 패키지 방법 으로 현재 항목 을 가 져 옵 니 다.@ComponentScan({"org.example.config"})을 통 해 스 캔 패키지 경 로 를 지정 합 니 다.
다음 나의 시작 클래스:

 가 져 온 jar:

문제.
예상 효 과 는 이 렇 습 니 다.정상 로드 입 니 다. 

시작 후,원래 의 Swagger 디 렉 터 리 가 들 어가 면 이 렇 습 니 다.원래 의 Controller 는 모두 불 러 오지 않 았 습 니 다.

복호화
필터 가 모든 경 로 를 불 러 오지 않 았 다 고 생각 했 습 니 다.바 이 두 는 Basic ErrorController 가 SwaggerConfig 설정 이 정의 되 지 않 았 을 때 기본 contrller 라 는 것 을 알 고 있 습 니 다.
그럼 내 Swagger Config 는 효력 이 없 는 거 야??

SwaggerConfig 가 용기 에 불 러 오지 않 았 습 니 다.원래 시작 클래스 가 건 드 린 물건 이 었 습 니 다.시작 클래스 밖의 bean-MyFilterBean 을 용기 에 불 러 오기 위해 서-시작 클래스 설정@ComponentScan({"org.example.config"})
시작 클래스 에@Componentscan 주 해 를 추가 하지 않 으 면 기본적으로 시작 클래스 와 하위 패키지 의 클래스 를 검색 합 니 다.내 설정 이 최초의 기능 을 바 꾼 거 잖 아.정말 기초 가 튼튼 하지 않 아.땅굴 산 이 흔 들 리 는 거 야~~
해결 방안
1.@Componentscan 을 추가 하면 시작 클래스 와 하위 패키지 의 클래스 도 스 캔 합 니 다.

2.현재 시작 클래스 경 로 를 스 캔 경로 에 직접 추가 합 니 다.
3、
resourecs 자원 디 렉 터 리 에 META-INF 폴 더 를 만 들 고 폴 더 에 spring.factories 파일 을 만 듭 니 다.

 파일 내용:

org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
org.example.config.MyFilterBean
시작 후 MyFilterBean 도 bean 에 불 러 온 것 을 발 견 했 습 니 다.(api 를 호출 할 때 일기/정지점 등 검증 을 통 해) 
주:
필터 클래스 에@Compont 주 해 를 직접 사용 하기 때문에 등록 필 터 는 기본적으로 모든 URL 요청 을 걸 러 냅 니 다.위 에서 테스트 할 때 편 의 를 위해 서 입 니 다.실제 사용 시 특정 URL 을 제어 할 수 있 도록 필 터 를 터치 합 니 다.FilterRegistration Bean 을 통 해 필 터 를 등록 합 니 다.필터 의 URL 모드 는 FilterRegistration Bean 류 의 addUrl Patterns 방법 으로 설정 합 니 다.아래 그림 과 같 습 니 다.

SpringBoot@ComponentScan 을 신 중 히 사용 해 야 하 는 이유 에 대한 이 글 은 여기까지 소개 되 었 습 니 다.SpringBoot@ComponentScan 에 관 한 더 많은 내용 은 저희 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 찾 아 보 세 요.앞으로 도 많은 응원 부 탁 드 리 겠 습 니 다!

좋은 웹페이지 즐겨찾기