2017-07-02 87 views
0

我试图在Spring Boot中使用非嵌入式PostgreSQL数据库。但是,当我尝试运行我的应用程序“MVN春天启动:运行”时,应用程序无法启动并显示以下消息:非嵌入式Postgresql在春季启动

无法确定数据库类型无嵌入式数据库驱动程序类

这些都是我的从pom.xml的依赖关系:

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

    <dependency> 
     <groupId>org.springframework.security.oauth</groupId> 
     <artifactId>spring-security-oauth2</artifactId> 
    </dependency> 

    <dependency> 
     <!-- Eureka service registration --> 
     <groupId>org.springframework.cloud</groupId> 
     <artifactId>spring-cloud-starter-eureka-server</artifactId> 
    </dependency> 

    <dependency> 
     <!-- Spring Cloud starter --> 
     <groupId>org.springframework.cloud</groupId> 
     <artifactId>spring-cloud-starter</artifactId> 
    </dependency> 

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

    <dependency> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-security</artifactId> 
     <scope>test</scope> 
    </dependency> 

    <dependency> 
     <groupId>org.springframework.security</groupId> 
     <artifactId>spring-security-jwt</artifactId> 
    </dependency> 

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

    <dependency> 
     <groupId>org.mapstruct</groupId> 
     <artifactId>mapstruct-jdk8</artifactId> 
     <version>${mapstruct.version}</version> 
    </dependency> 

    <dependency> 
     <groupId>org.postgresql</groupId> 
     <artifactId>postgresql</artifactId> 
     <version>9.4-1206-jdbc42</version> 
    </dependency> 

    <dependency> 
     <groupId>com.h2database</groupId> 
     <artifactId>h2</artifactId> 
     <version>${h2.version}</version> 
     <scope>test</scope> 
    </dependency> 


    <dependency> 
     <groupId>io.rest-assured</groupId> 
     <artifactId>rest-assured</artifactId> 
     <version>3.0.1</version> 
     <scope>test</scope> 
    </dependency> 
    <dependency> 
     <groupId>com.pew.common</groupId> 
     <artifactId>backend-common</artifactId> 
     <version>0.0.1-SNAPSHOT</version> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework.security</groupId> 
     <artifactId>spring-security-test</artifactId> 
     <version>4.2.1.RELEASE</version> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-test</artifactId> 
     <version>4.3.6.RELEASE</version> 
    </dependency> 
    <dependency> 
     <groupId>io.rest-assured</groupId> 
     <artifactId>spring-mock-mvc</artifactId> 
     <version>3.0.2</version> 
     <scope>test</scope> 
    </dependency> 

</dependencies> 

这是我在application.yml设置:

spring: 
    profiles: dev 
    application: 
    name: resource-service 
    jpa: 
    database: POSTGRESQL 
    datasource: 
     platform: postgres 
     url: jdbc:postgresql://${postgresqlHost:localhost}:${postgresqlPort:5432} 
     username: ${postgresqlUsername:root} 
     password: ${postgresqlPassword:SomePassword} 
     driverClassName: org.postgresql.Driver 

我无法找到这个这让我觉得,这可能是一些真正容易得到工作太多的信息.​​..

+0

datasource属性应该直接在spring下,而不是在spring.jpa下。所有你需要的是网址,用户名和密码。 –

回答

0

当你执行"mvn spring-boot:run"你不指定使用Spring引导dev轮廓,而你要为dev配置文件配置数据源的属性:

profiles: dev 

此外,在application.yml你应该参考该属性: spring.datasource而不是jpa.database.datasource,Spring并未使用它。

你应该写:

spring.datasource: 
    driverClassName: org.postgresql.Driver 
    url: jdbc:postgresql://${postgresqlHost:localhost}:${postgresqlPort:5432} 
    ... 

Here即将做到这一点的文档参考。

+0

你是对的!我错误地在jpa下添加了数据源。谢谢! – user1716970

+0

欢迎您:) – davidxxx

0

您需要提供数据库URL和驱动程序类名称正确

spring.datasource.url = <database source url> 
spring.datasource.driver-class-name = <driver class name>