问题现象:
今天在项目中遇到一个问题:组长让我把一个springboot单体项目简单的拆分为微服务项目;
我将项目简单的拆分为:
1.controller+config模块
2.数据model+dao/mapper持久层模块
之后;运行项目却发生了如下报错:
问题分析:
通过查看报错信息:
java.lang.IllegalArgumentException: dataSource or dataSourceClassName or jdbcUrl is required.
可以初步得知:是数据源dataSource出问题了,系统找不到数据源从而报错.
于是就去查看自己在拆分为微服务项目之后,下面这些地方是否有配置错误:
1.数据model+dao/mapper持久层模块中的mapper接口和Mapper.xml文件中对应的文件路径是否有错误.
2.应用mapper接口方法的controller+config模块中导入的包路径是否改名或者正确路径错误.
3.父子模块的pom.xml是否有配置层级联系.
4.controller+config模块的pom.xml是否有导入需要调用的数据model+dao/mapper持久层模块的依赖包.
检查之后发现都没有问题,但就是依旧是报这个错误.
最后通过这个报错信息我才知道问题所在:
这里提到了:HikariPool-1 - dataSource or dataSourceClassName or jdbcUrl is required.
关键字是:
HikariPool-1
通过查询资料我发现:
原来我的项目配置文件中使用的是springboot2的数据源:Hikari
通过查看我的application.properties配置文件可以发现,我的数据源配置如下:
我估计这样配置是不规范的,在单体项目中或许不会有问题(系统可能会自动搜寻当前项目中的数据源配置);但不是单体项目的时候就会搜寻不到了,
因此需要将这里的数据源配置改为Hikari的数据源配置方式.
解决方法:
将配置文件中关于数据源的配置修改为:
结果:运行成功