Spring Boot连接到Heroku上的Postgres数据库

时间:2016-07-31 16:36:20

标签: spring postgresql heroku spring-boot

我一直在使用部署在Heroku上的Spring Boot应用程序,但我偶然发现了一个我无法找到解决方案的错误。

我尝试按照Heroku教程(link)连接到Postgres数据库但是我一遍又一遍地得到这个错误:

Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: 
Failed to instantiate [javax.sql.DataSource]:
Factory method 'dataSource' threw exception; nested exception is java.lang.IllegalStateException: No supported DataSource type found

这是我使用的配置文件:

spring.datasource.url=${JDBC_DATABASE_URL}
spring.datasource.driverClassName=org.postgresql.Driver
spring.datasource.username=username
spring.datasource.password=password
spring.datasource.removeAbandoned=true

和DatabaseConfig类:

@Configuration
public class DatabaseConfig {
    @Bean @Primary
    @ConfigurationProperties(prefix = "spring.datasource")
    public DataSource dataSource() {
        return DataSourceBuilder.create()
                .build();
    }
}

任何人都可以指出我正确的方向。我做错了什么?

1 个答案:

答案 0 :(得分:1)

我遇到了同样的问题,并设法解决了这个问题。该问题并非特定于Heroku,因为它可以通过在本地运行应用程序以及使用相同的配置进行复制。

根据堆栈跟踪,很明显在类路径中找不到DataSource。根据找到here的Spring Boot文档,您可以自动使用 spring-boot-starter-jdbc spring-boot-starter-data-jpa 获取 tomcat-jdbc ,这似乎是Spring Boot中的首选。

我在pom.xml中添加了以下依赖项,解决了这个问题:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>