I have successfully developed a prototype using Spring Boot 1.0.2.RELEASE (was 1.0.1.RELEASE until today).
I have searched and searched and tried solutions like: Spring Boot jdbc datasource autoconfiguration fails on standalone tomcat Spring Boot / Spring Data import.sql doesn't run Spring-Boot-1.0.0.RC1
They all suggests to let Spring Boot do the job. When using H2, everything works, but when I try to switch to PostgreSQL, i get:
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
My build.gradle is as follow:
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
Removing application.properties and changing the dependency back to H2 and everything is OK.
I can't find where I am doing wrong :-(
Error Message Reason: Failed to determine a suitable driver class Action: Consider the following: If you want an embedded database (H2, HSQL or Derby), please put it on the classpath. If you have database settings to be loaded from a particular profile you may need to activate it (no profiles are currently active).
Using PostgreSQL in Spring Boot Also, we can use JPA of spring data to connect the database of PostgreSQL. Also, we need to add the JDBC driver dependency of the PostgreSQL database to allow the spring boot application to connect or talk with the PostgreSQL database server.
JDBC is a core API of Java 1.1 and later. It provides a standard set of interfaces to SQL -compliant databases. PostgreSQL provides a type 4 JDBC driver.
Where did this come from: database.driverClassName=org.postgresql.Driver
? Don't you mean spring.datasource.driverClassName
?
spring.datasource.driver-class-name=org.postgresql.Driver
Make sure to reload your project if you recently just added postgres to your dependencies.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With