34 springboot项目之间依赖导致bean 无法加载问题

本文探讨了在Spring Boot项目中,当模块A引入模块B时,B模块的bean无法注入到A模块的问题。分析了问题的原因在于模块间Application的位置差异导致的bean扫描范围限制,并提供了三种解决方案:调整Application位置、使用@ComponentScan注解指定扫描路径以及避免使用spring-boot-maven-plugin打包。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

方式一(OK)

模块A引入模块B ,但是模块B的bean一直注入不进来

原因: A模块的Application是在com.xx.xx包下,那么势必只能扫描到这个包下的bean, B模块的Application是在com.xxx包下,那么在A引入B以后就A就肯定扫描不到他上层包的bean

解决办法:

1.将A模块和B模块的Application置于相同路径下,例如com.xx下(只是名称一致,不是真的在同一包下)

2.使用@ComponentScan(value="com.xx")注解,指定扫描的包路径

3.此时@SpringBootApplication的扫描包路径已经不起作用,即便显示声明也没用(scanBasePackages)

 

@ComponentScan会取代@SpringBootApplication注解的scanBasePackages,

所以如果A模块的包名和B模块的包名不一致的话,要把A,B的包分别放到@ComponentScan中,

 


 

(注:这个和上面的无关)

 不使用Spring boot自带的打包插件

不能使用springboot项目自带的打包插件进行打包:

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

 

而应当使用传统项目的maven打包:

<build>
   <plugins>
      <plugin>
         <groupId>org.apache.maven.plugins</groupId>
         <artifactId>maven-compiler-plugin</artifactId>
         <configuration>
            <source>1.8</source> <!--指明源码用的Jdk版本-->
            <target>1.8</target> <!--指明打包后的Jdk版本-->
         </configuration>
      </plugin>
   </plugins>
</build>

因为springboot-maven-plugin打包的第一级目录为Boot-INF,无法引用.

并install到本地maven库中:

maven clean install

 

转载于:https://www.cnblogs.com/guchunchao/p/10783726.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值