这是我的sapplication.yml
spring:
数据源: 键入:com.zaxxer.hikari.HikariDataSource 初级:
serverName: localhost
portNumber: 3306
databaseName: ccoee
username: root
password: root
dataSourceClassName: com.mysql.cj.jdbc.Driver
secondary:
serverName: localhost
portNumber: 3306
databaseName: ccoee
username: root
password: root
dataSourceClassName: com.mysql.cj.jdbc.Driver
这是我的首发:
ApplicationContext applicationContext = SpringApplication.run(
TransqlApplication.class, args);
DataSource dataSource = applicationContext.getBean(DataSource.class);
System.out.println("datasource is :" + dataSource);
//检查数据库是否是hikar数据库连接池
if (!(dataSource instanceof HikariDataSource)) {
System.err.println(" Wrong datasource type :"
+ dataSource.getClass().getCanonicalName());
System.exit(-1);
}
try {
Connection connection = dataSource.getConnection();
ResultSet rs = connection.createStatement()
.executeQuery("SELECT 1");
if (rs.first()) {
System.out.println("Connection OK!");
} else {
System.out.println("Something is wrong");
}
// connection.close();
// System.exit(0);
} catch (SQLException e) {
System.out.println("FAILED");
e.printStackTrace();
System.exit(-2);
// TODO: handle exception
}
这是我的例外:
datasource is :HikariDataSource (null)
2017-11-21 10:10:33.126线程"主要" java.lang.RuntimeException:java.lang.ClassCastException:无法将com.mysql.cj.jdbc.Driver强制转换为javax.sql.DataSource 信息来自com.zaxxer.hikari.util.UtilityElf.createInstance(UtilityElf.java:93) 676 --- at com.zaxxer.hikari.pool.PoolBase.initializeDataSource(PoolBase.java:338) [main] at com.zaxxer.hikari.pool.PoolBase。(PoolBase.java:117) Com.zaxxer.hikari.HikariDataSource,com.zaxxer.hikari.pool.HikariPool。(HikariPool.java:109) :at com.zaxxer.hikari.HikariDataSource.getConnection(HikariDataSource.java:97) HikariPool-1 - 开始...... 在com.mycjj.transql.TransqlApplication.main(TransqlApplication.java:51) 引起:java.lang.ClassCastException:无法将com.mysql.cj.jdbc.Driver转换为javax.sql.DataSource 在java.lang.Class.cast(Class.java:3369) 在com.zaxxer.hikari.util.UtilityElf.createInstance(UtilityElf.java:82) ......还有5个 2017-11-21 10:10:34.204 ERROR 676 --- [pool-1-thread-1] com.mycjj.transql.GetSql:数据库连接异常,请检查地址/账号/密码是否正确
答案 0 :(得分:1)
JDBC驱动程序类不是javax.sql.DataSource
。您不应该使用dataSourceClassName
属性,请使用driverClassName
属性。
此外,com.mysql.cj.jdbc.Driver
是MySQL Connector / J 6.0(已被放弃)或8.0(仍在开发中)的开发版本的类名。它 - 在这个时候 - 不是发布的版本,你不应该在生产中使用它。