原因分析:
通过Debug发现,问题出在JDBCUtils工具类中。加载配置文件时会抛异常。
方法一:
查找完网上的所有关于Property ‘dataSource’ is required的资料后,大部分的措施都是关于druid.properties前加不加/的路径问题,故解决方案第一个为此方法,若仍未解决,则尝试方法二。
方法二:
- 1.使用ClassLoader加载配置文件,获取字节输入流时,druid.properties前不要加/,同时druid.properties文件要放在src目录下(如图)
2.检查DataSource的声明及赋值
* 若如下图一样,那么DataSource恒为null,因为try…catch代码块中虽然通过工厂获取了DataSource但是,作用范围只有try…catch代码块,再使用JDBCUtils.getDataSource返回的是 定义的静态变量的ds(值为null的),所有解决方案为方法一中的图一
3.本人遇到的问题,druid.properties放在了src目录下,而且在获取druid.properties文件前也没加/,但还是报错。通过查阅资料发现,我使用IDEA创建项目的时候创建的是maven项目(可通过下图粗略的判断是不是maven项目),在maven项目中,配置文件要放在resources文件中,如果没有该文件可以在项目上右击new Directory,IDEA会自动提醒创建maven项目中,你缺少的文件夹。
所有只需要把druid.properties扔进resources中即可。
4.修改druid.properties中的配置
在url中后面加上?serverTimezone=UTC
5.如果根据上述方法修改后还没有解决,并且报错如下:
Cannot resolve com.mysq.jdbc.Connection.ping method. Will use ‘SELECT 1‘ instead.
那应该是Druid的版本与mysql的版本不兼容的问题,我的MySQL版本是8.0,而Druid版本1.0,换一下Druid版本即可,我这里直接换到了1.2.5,然后解决了问题。