SpringBoot 시작 클래스 의 스 캔 주해 의 용법 및 충돌 원칙 을 자세히 설명 합 니 다.
3128 단어 SpringBoot시작 클래스스캐닝주해충돌 하 다.
SpringBoot 시작 클래스 에서 스 캔 패키지 경 로 를 설정 하 는 데 세 가지 방법 이 있 습 니 다.최근 에 한 응용 프로그램 에서 세 가지 주 해 를 모두 사용 하 는 것 을 보 았 습 니 다.코드 는 다음 과 같 습 니 다.
@SpringBootApplication(scanBasePackages ={"a","b"})
@ComponentScan(basePackages = {"a","b","c"})
@MapperScan({"XXX"})
public class XXApplication extends SpringBootServletInitializer
}
그렇다면 의문 이 생 겼 다.SpringBoot 에서 이 세 가지 주 해 는 발효 우선 순위 가 어 떻 습 니까?첫 번 째 와 두 번 째 는 차이 가 있 습 니까?본문 은 이 세 개의 주해 의 주의사항 을 정리 하 였 다.SpringBootApplication 주석
이것 은 SpringBoot 의 주해 이 며,본질은 세 개의 Spring 주해 의 합 이다.
scanBasePackages
속성 을 통 해 패키지 경 로 를 다시 설정 할 수 있 습 니 다.메모:jar 패키지 에 의존 하 는 주 해 를 스 캔 해 야 합 니 다.가방 에 의존 하 는 경로 와 SpringBoot 시작 경로 에 포함 되 지 않 으 면 제3자 패 키 지 를 스 캔 하 는 주 해 를 단독으로 사용 해 야 합 니 다.이 주석 이 있 으 면 기본 스 캔 패키지 가 효력 을 잃 기 때문에 이 프로젝트 의 스 캔 경 로 를 지정 해 야 합 니 다.
예 를 들 어 이 프로젝트:
SpringBoot 시작 클래스 의 프로젝트 디 렉 터 리 는
@ComponentScan
이 며,인 용 된 제3자 공공 패키지cn.com.a.b
의 디 렉 터 리 도xxx.common.jar
입 니 다.그러면 제3자 jar 패키지 의 주 해 는 천연 적 으로 스 캔 될 수 있 습 니 다.다른 jar 가방 에 주석 이 있 으 면 검색 할 수 없습니다.ComponentScan 주석
이것 은 Spring 프레임 워 크 의 주석 입 니 다.구성 요소 스 캔 경 로 를 지정 하 는 데 사 용 됩 니 다.이 주석 을 사용 하면 전체 프로젝트 에서 스 캔 해 야 할 경 로 를 모두 포함 해 야 합 니 다.기본 검색 경 로 를 덮어 쓰기 때문에 효력 을 잃 습 니 다.
실효 표현 은 두 가지 가 있 습 니 다.
첫째,
cn.com.a.b
한 값 만 포함 하고 기본 시작 클래스 디 렉 터 리 입 니 다.SpringBootApplication
효력 이 발생 하면ComponentScan
주석 이 효력 을 잃 고 오 류 를 보고 합 니 다.둘째,
SpringBootApplication
여러 개의 구체 적 인 하위 디 렉 터 리 를 지정 하면 이때ComponentScan
가 효력 을 잃 고,Spring 은 지정 한 디 렉 터 리 의 주석 만 스 캔ComponentScan
합 니 다.디 렉 터 리 밖의 Controller 류 가 있 으 면 안 타 깝 게 도 이 컨트롤 러 들 은 접근 할 수 없습니다.시작 코드 로 돌아 가기:
@SpringBootApplication(scanBasePackages ={})
@ComponentScan(basePackages = {})
여기에SpringBootApplication
주 해 를 지정 하면ComponentScan
효력 을 잃 는 다.따라서ComponentScan
의scanBasePackages
값 이ComponentScan
즉 시작 클래스 가 있 는 가방 을 포함 하지 않 고 제3자 jar 의 디 렉 터 리 만 지정 하면 이 프로젝트 의 어떠한 주해 도 스 캔 할 수 없습니다.MapperScan 주석
이것 은 MyBatis 의 주해 입 니 다.지 정 된 디 렉 터 리 에 있 는 모든 DAO 클래스 를 MyBatis
basePackages
클래스 로 봉 한 다음 Spring 용기 에 주입 합 니 다.추가 주해 없 이 주입 이 완 료 됩 니 다.계시 록
SpringBoot 패키지 스 캔 경로,두 주해 의 충돌 행 위 를 반복 적 으로 검 증 했 지만 합 리 적 인 해석 을 찾 지 못 했 습 니 다.이 글 은 초고 함 에서 거의 2 주 동안 준비 되 어 줄곧 방치 되 어 있다.
오늘 두 사람 이 동시에 사용 할 때
cn.com.a.b
효력 을 잃 는 다 는 글 을 찾 아 봄 부 트 스 캔 경로 에 대한 의혹 이 사 라 졌 다.여기 서 SpringBoot 시작 류 의 스 캔 주 해 를 상세 하 게 설명 하 는 용법 과 충돌 원칙 에 관 한 글 은 여기까지 입 니 다.더 많은 SpringBoot 시작 류 스 캔 주 해 는 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 조회 하 시기 바 랍 니 다.앞으로 많은 관심 을 가 져 주 십시오!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
【Java・SpringBoot・Thymeleaf】 에러 메세지를 구현(SpringBoot 어플리케이션 실천편 3)로그인하여 사용자 목록을 표시하는 응용 프로그램을 만들고, Spring에서의 개발에 대해 공부하겠습니다 🌟 마지막 데이터 바인딩에 계속 바인딩 실패 시 오류 메시지를 구현합니다. 마지막 기사🌟 src/main/res...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.