首先说明问题:解决方式就是讲mysql-connector-java的版本升为8.x。(可能降spring-boot的版本也可以)
2019-12-11 00:29:49.166 INFO 18748 --- [ main] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Starting...
2019-12-11 00:29:49.170 WARN 18748 --- [ main] com.zaxxer.hikari.util.DriverDataSource : Registered driver with driverClassName=com.mysql.jdbc.Driver was not found, trying direct instantiation.
2019-12-11 00:29:49.421 INFO 18748 --- [ main] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Start completed.
我用的版本:spring boot 2.2.2.RELEASE,mysql-connector-java 5.1.47
首先我们都知道,mysql-connector-java的版本从5.x变为8.x之后,driverClassName由com.mysql.jdbc.Driver
-> com.mysql.cj.jdbc.Driver
;
出现上面的原因正是由于上面的driverClassName的改动,解决方法就是升级mysql-connector-driver的版本到8.x。
之所以这样改的原因是:下面是简单的分析,所有可以在applicationContext.properties
文件中配置的属性,都会有一个XxxProperties.java
与其对应。具体来说,我们可以配置spring.datasource.driverClassName
,也是由于DataSourceProperties.java
文件的存在。
定位到DataSourceProperties
的determineDriverClassName
方法:
上面的逻辑比较简单,根据我们配置的url来找到driverClassName,因为配置的jdbc:mysql://...
,所以:进入DatabaseDriver
:
我们可以看到,在spring boot 2.2.2版本中,mysql对应的driverClassName为:com.mysql.cj.jdbc.Driver
。
当将mysql-connector-java升级到8.x版本,并配置了com.mysql.cj.jdbc.Driver
后,问题就解决了: