踩坑1
spring3中的一个变化是spring.factories变成了在META-INF/spring目录下创建文件名为org.springframework.boot.autoconfigure.AutoConfiguration.imports
内容为配置类的全类名。注意这里的目录需要依次建立,文件不能直接复制,否则不能出现这个绿色的图标。
踩坑2
首先我的被依赖项目A,和依赖项目B都是一个父项目的子模块。我在父项目中导入了如下依赖:
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
这个依赖的目的是在打包时依赖的包打进去。
而我的A项目中因为父项目中有这个依赖,在mvn clean install 时报错找不到主类。
于是我在pom文件中加上
<packaging>pom</packaging>
A项目没有主类mvn install 可以成功了。
配置好上述的org.springframework.boot.autoconfigure.AutoConfiguration.imports
结果在项目B中注入不了
如果想要在B中引用A中配置文件里面的内容,比如定义的组件等,A和B都需要主类,并且在B的主类中在@SpringBootApplication(scanBasePackages = {A配置类所在包})
这样才能正常引入,感觉不太符合要求。
之后我直接注释掉了父项目中的依赖
然后更改A中打包方式为jar,之后在B中才能在SpringBootApplication注解中不定义扫描包,依然可以正常注入。
踩坑3
在用SpringBootTest注解时,我B中mian下的目录和test下的目录设置不一样,导致注入A中Bean失败。且最开始我还没有设置主类,就直接使用SpringBootTest注解,发现SpringBootTest会自动去找@SpringBootApplication下的主类。
全是基础错误,但是因为这些错误耽搁了好多时间,学习SpringBoot的时候根本没有深入,导致排错的时候花费大量时间。真的是基础不牢,地动山摇。