常见问题汇总
1. 依赖注入失效
1.1 目录结构导致没有权限
依赖注入时,会存在权限问题,如果启动的位置不在所有类结构的外面,包扫描时,会出现无法注入的问题。
问题:
1. 修改pom,加入依赖,理论上iml应该会被修改,需要的依赖被正确导入,但是实际无法生效,iml没有被修改
这是碰到比较头痛的问题,碰到的情况如下,
- 使用Maven面板中的refresh按钮,可以更新
- 使用File/ Invalidate Caches and Restart,能够生效
但是还有一个情况我一直没搞明白
- 当时是首先尝试自己加依赖,自己拷贝过去的,出现@Api等swagger注解无法识别的情况,手动加入依赖以后,尝试常规的做法不起作用。
- 把原有项目的pom文件复制过去,再使用Maven面板的Refresh,依赖被正确读取,即iml文件里面正确的出现了所需的依赖。
其背后的原因,是缺少某个关键依赖,缺少某个关键字,或者是其他什么原因,没有时间研究,不清楚。
2. 测试代码中无法正确注入依赖,
如下图所示,出现问题,将注解改成@Resource后,编译可以通过,但是运行的时候依然有问题。
将SpringBootTest设置为OrmApplicationApp.class时问题解决。
@SpringBootTest(classes = OrmApplicationApp.class)
@RunWith(SpringRunner.class)
public class OrmTest {
大致明白原因,但是仍然有疑点,因为另一个测试项目没有这个问题。
重点问题: 依赖的管理
去除依赖
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<!--必须要去掉内置的mybatis依赖与jsqlparser,不然会和Mapper Plus中的版本不一致 导致起不来-->
<exclusions>
<exclusion>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
</exclusion>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</exclusion>
<exclusion>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-autoconfigure</artifactId>
</exclusion>
<exclusion>
<groupId>com.github.jsqlparser</groupId>
<artifactId>jsqlparser</artifactId>
</exclusion>
</exclusions>
</dependency>