为什么在以下配置中缺少驱动程序类?
spring.datasource.testdb.url=jdbc:mariadb://localhost/mytable
spring.datasource.testdb.driver-class-name=org.mariadb.jdbc.Driver
spring.datasource.testdb.username=test
spring.datasource.testdb.password=test
@Configuration
public class DataSourceConfig {
@ConfigurationProperties(prefix = "spring.datasource.testdb")
@Primary
public DataSource dataSourceTest() {
return DataSourceBuilder.create().build();
}
@Bean
@Primary
public JdbcTemplate jdbcTemplateTest() {
return new JdbcTemplate(dataSourceTest());
}
//secondary db config to follow
}
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<dependency>
<groupId>org.mariadb.jdbc</groupId>
<artifactId>mariadb-java-client</artifactId>
</dependency>
</dependencies>
结果:
无法配置数据源:未指定'url'属性,并且 无法配置任何嵌入式数据源。原因:未能 确定合适的驱动程序类别
这很奇怪,因为我什至可以进入org.mariadb.jdbc.Driver
类,所以它显然在类路径上。
答案 0 :(得分:2)
看起来您只需要将@Bean批注添加到dataSourceTest()。
@Bean
@ConfigurationProperties(prefix = "spring.datasource.testdb")
@Primary
此外,对于Hikari连接池(这是默认连接池),url属性是jdbc-url,而不是url。因此,更改
spring.datasource.testdb.url=jdbc:mariadb://localhost/mytable
到
spring.datasource.testdb.jdbc-url=jdbc:mariadb://localhost/mytable
有关更多信息和其他可能的解决方案,请参见:After Spring Boot 2.0 migration: jdbcUrl is required with driverClassName
希望这会有所帮助。
答案 1 :(得分:0)
您确定属性文件已正确加载吗?该消息清楚地表明未指定url
属性,因此显然未读取spring.datasource.testdb.url=jdbc:mariadb://localhost/mytable
行-驱动程序类路径与它无关。
默认情况下,这些行应位于application.properties
文件中,这是您所在的位置吗?