常见问题汇总

1. 依赖注入失效

1.1 目录结构导致没有权限

依赖注入时,会存在权限问题,如果启动的位置不在所有类结构的外面,包扫描时,会出现无法注入的问题。

问题:

1. 修改pom,加入依赖,理论上iml应该会被修改,需要的依赖被正确导入,但是实际无法生效,iml没有被修改

这是碰到比较头痛的问题,碰到的情况如下,
- 使用Maven面板中的refresh按钮,可以更新
- 使用File/ Invalidate Caches and Restart,能够生效

但是还有一个情况我一直没搞明白

  1. 当时是首先尝试自己加依赖,自己拷贝过去的,出现@Api等swagger注解无法识别的情况,手动加入依赖以后,尝试常规的做法不起作用。
  2. 把原有项目的pom文件复制过去,再使用Maven面板的Refresh,依赖被正确读取,即iml文件里面正确的出现了所需的依赖。

其背后的原因,是缺少某个关键依赖,缺少某个关键字,或者是其他什么原因,没有时间研究,不清楚。

2. 测试代码中无法正确注入依赖,

如下图所示,出现问题,将注解改成@Resource后,编译可以通过,但是运行的时候依然有问题。
image.png

将SpringBootTest设置为OrmApplicationApp.class时问题解决。

  1. @SpringBootTest(classes = OrmApplicationApp.class)
  2. @RunWith(SpringRunner.class)
  3. public class OrmTest {

大致明白原因,但是仍然有疑点,因为另一个测试项目没有这个问题。

重点问题: 依赖的管理

去除依赖

  1. <dependency>
  2. <groupId>com.github.pagehelper</groupId>
  3. <artifactId>pagehelper-spring-boot-starter</artifactId>
  4. <!--必须要去掉内置的mybatis依赖与jsqlparser,不然会和Mapper Plus中的版本不一致 导致起不来-->
  5. <exclusions>
  6. <exclusion>
  7. <groupId>org.mybatis.spring.boot</groupId>
  8. <artifactId>mybatis-spring-boot-starter</artifactId>
  9. </exclusion>
  10. <exclusion>
  11. <groupId>org.springframework.boot</groupId>
  12. <artifactId>spring-boot-starter</artifactId>
  13. </exclusion>
  14. <exclusion>
  15. <groupId>com.github.pagehelper</groupId>
  16. <artifactId>pagehelper-spring-boot-autoconfigure</artifactId>
  17. </exclusion>
  18. <exclusion>
  19. <groupId>com.github.jsqlparser</groupId>
  20. <artifactId>jsqlparser</artifactId>
  21. </exclusion>
  22. </exclusions>
  23. </dependency>