wake-up-neo.com

Spring Boot kann DataSource nicht mit dem PostgreSQL-Treiber laden

Ich habe erfolgreich einen Prototyp mit Spring Boot 1.0.2.RELEASE entwickelt (war bis heute 1.0.1.RELEASE).

Ich habe nach folgenden Lösungen gesucht und diese ausprobiert: Die automatische Konfiguration der Spring Boot-JDBC-Datenquelle schlägt bei eigenständigem Tomcat fehl.Spring Boot/Spring Data import.sql führt Spring-Boot-1.0.0 nicht aus. RC1

Sie alle schlagen vor, Spring Boot den Job machen zu lassen. Bei der Verwendung von H2 funktioniert alles, aber wenn ich versuche, auf PostgreSQL umzusteigen, erhalte ich:

Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory' defined in class path resource [org/springframework/boot/autoconfigure/orm/jpa/HibernateJpaAutoConfiguration.class]: Instantiation of bean failed; nested exception is org.springframework.beans.factory.BeanDefinitionStoreException: Factory method [public org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean org.springframework.boot.autoconfigure.orm.jpa.JpaBaseConfiguration.entityManagerFactory(org.springframework.orm.jpa.JpaVendorAdapter)] threw exception; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [javax.sql.DataSource] is defined

Mein build.gradle ist wie folgt:

loadConfiguration()

def loadConfiguration() {
def environment = hasProperty('env') ? env : 'dev'
project.ext.envrionment = environment
println "Environment is set to $environment"

def configFile = file('config.groovy')
def config = new ConfigSlurper("$environment").parse(configFile.toURL())
project.ext.config = config
}

buildscript {
ext {
    springBootVersion = '1.0.2.RELEASE'
}
repositories {
    mavenCentral()
}
dependencies {
    classpath("org.springframework.boot:spring-boot-gradle-   plugin:${springBootVersion}")
}
}

apply plugin: 'Java'
apply plugin: 'Eclipse'
apply plugin: 'idea'
apply plugin: 'spring-boot'
apply plugin: 'war'
apply plugin: 'groovy'

war {
baseName = 'test'
version =  '0.0.1-SNAPSHOT'
}

configurations {
providedRuntime
}

repositories {
mavenCentral()
}

dependencies {
compile("org.springframework.boot:spring-boot-starter-web:${springBootVersion}")
compile("org.springframework.boot:spring-boot-starter-thymeleaf:${springBootVersion}")

compile("org.springframework.boot:spring-boot-starter-jdbc:${springBootVersion}")
compile("org.springframework.boot:spring-boot-starter-data-jpa:${springBootVersion}")
compile("postgresql:postgresql:9.1-901.jdbc4")
//compile("com.h2database:h2")

testCompile("org.springframework.boot:spring-boot-starter-test:${springBootVersion}")

}

task wrapper(type: Wrapper) {
gradleVersion = '1.11'
}

application.properties:

spring.jpa.database=POSTGRESQL
spring.jpa.show-sql=false
spring.jpa.hibernate.ddl-auto=update

spring.database.driverClassName=org.postgresql.Driver
spring.datasource.url=jdbc:postgresql://localhost/cms
spring.datasource.username=cms
spring.datasource.password=NA

Entfernen von application.properties und Ändern der Abhängigkeit zurück zu H2 und alles ist in Ordnung.

Ich kann nicht finden, wo ich falsch mache :-(

19
mamruoc

Von wo ist das gekommen: database.driverClassName=org.postgresql.Driver? Meinst du nicht spring.datasource.driverClassName?

21
Dave Syer

versuchen Sie einige Zeit, Ihr Maven-Projekt erneut zu importieren, wenn die Abhängigkeiten nicht aktualisiert werden. Fügen Sie außerdem Folgendes zu Ihrer pom.xml hinzu

 <dependency>
            <groupId>postgresql</groupId>
            <artifactId>postgresql</artifactId>
            <version>9.1-901.jdbc4</version>
</dependency>
0
Pravin