方式一(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