34 springboot 프로젝트 간의 종속성으로 인해 Bean을 로드할 수 없습니다.

4926 단어

방법 1(확인)


모듈 A는 모듈 B를 소개하지만 모듈 B의 빈은 주입되지 않았습니다.
이유: 모듈 A의 응용 프로그램은 com.xx.xx 패키지 아래에 있으므로 이 패키지 아래의 빈만 스캔할 수 있고 모듈 B의 응용 프로그램은 패키지 com.xxx 아래에 있으며 A가 B를 소개한 후 A는 확실히 상위 레벨 패키지의 빈을 스캔할 수 없습니다.
해결책:
1. 모듈 A와 모듈 B의 응용 프로그램을 com.xx와 같은 동일한 경로에 넣습니다(같은 패키지가 아닌 같은 이름일 뿐입니다).
2. @ComponentScan(value="com.xx") 주석을 사용하여 스캔할 패키지 경로를 지정합니다.
3. 이때 @SpringBootApplication의 스캔 패키지 경로는 선언이 표시되어도(scanBasePackages) 영향을 미치지 않습니다.
 
@ComponentScan은 @SpringBootApplication으로 주석이 달린 scanBasePackages를 대체합니다.
따라서 모듈 A의 패키지 이름이 모듈 B의 패키지 이름과 일치하지 않으면 A와 B의 패키지를 각각 @ComponentScan에 넣고,
 

 

(참고: 이것은 위의 내용과 관련이 없습니다.)


Spring 부트와 함께 제공되는 패키지 플러그인을 사용하지 마십시오.


패키징을 위해 springboot 프로젝트와 함께 제공되는 패키징 플러그인을 사용할 수 없습니다.

<build>
   <plugins>
      <plugin>
         <groupId>org.springframework.bootgroupId>
         <artifactId>spring-boot-maven-pluginartifactId>
      plugin>
   plugins>
build>

 
대신 기존 프로젝트의 maven 패키징을 사용해야 합니다.

<build>
   <plugins>
      <plugin>
         <groupId>org.apache.maven.pluginsgroupId>
         <artifactId>maven-compiler-pluginartifactId>
         <configuration>
            <source>1.8source> 
            <target>1.8target> 
         configuration>
      plugin>
   plugins>
build>

springboot-maven-plugin에 의해 패키징된 1단계 디렉토리는 Boot-INF이므로 참조할 수 없다.
그리고 로컬 maven 라이브러리에 설치합니다.

maven clean install

 

재인쇄: https://www.cnblogs.com/guchunchao/p/10783726.html

좋은 웹페이지 즐겨찾기