【发布时间】:2019-01-10 10:29:21
【问题描述】:
我们在 Spring Boot 应用程序中使用了多个数据源配置。 两个数据源都只属于 mysql。
使用以下方式配置多个数据源:
pom.xml 更改:
<!-- exclude tomcat jdbc connection pool, use HikariCP -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
<exclusions>
<exclusion>
<groupId>org.apache.tomcat</groupId>
<artifactId>tomcat-jdbc</artifactId>
</exclusion>
</exclusions>
</dependency>
<!-- exclude tomcat-jdbc, Spring Boot will use HikariCP automatically -->
<dependency>
<groupId>com.zaxxer</groupId>
<artifactId>HikariCP</artifactId>
</dependency>
.properties****:
spring.db1.datasource.jdbcUrl=jdbc:mysql://localhost:3306/db1?zeroDateTimeBehavior=convertToNull
spring.db1.datasource.driverClassName=com.mysql.jdbc.Driver
spring.db1.datasource.username=root
spring.db1.datasource.password=
spring.db2.datasource.jdbcUrl=jdbc:mysql://localhost:3306/db2?zeroDateTimeBehavior=convertToNull
spring.db2.datasource.driverClassName=com.mysql.jdbc.Driver
spring.db2.datasource.username=root
spring.db2.datasource.password=
数据源 Bean 配置:
@Bean
@ConfigurationProperties(prefix = "spring.db1.datasource")
public DataSource db1DataSource() {
return DataSourceBuilder.create().build();
}
@Bean
@ConfigurationProperties(prefix = "spring.db2.datasource")
public DataSource db2Source() {
return DataSourceBuilder.create().build();
}
但是当我运行它时出现以下异常:
Caused by: org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.springframework.orm.jpa.JpaVendorAdapter]: Factory method 'jpaVendorAdapter' threw exception; nested exception is java.lang.IllegalArgumentException: jdbcUrl is required with driverClassName.
如何解决这个问题?
【问题讨论】:
-
在属性文件中使用
url而不是jdbcUrl。 -
@M.Deinum 同样的例外。原因:java.lang.IllegalArgumentException:驱动程序类名称需要 jdbcUrl。
-
您的设置似乎没问题。你是在
application.properties中传递你的参数还是它是一个不同的文件名。另外我注意到你没有在 mysql 的 pom 中包含 db 驱动程序 -
您应该使用前面提到的
url,并尝试删除driverClassName属性,因为这不是必需的(Spring Boot 将根据 URL 来计算)。您能否也添加完整的堆栈跟踪而不是 sn-p。 -
@M.Deinum 谢谢。删除了 driverClassName,它的工作
标签: spring-boot spring-data-jpa