从applications.properties进行Spring引导的数据库application.yml

时间:2015-10-24 22:02:26

标签: spring spring-boot database-connection

我有一个可以连接到Postgres数据库的Spring Boot应用程序。我已经使用application.properties文件设置了项目,但是想切换到application.yml文件。但是,当我进行切换时,我的应用程序在尝试连接到数据库时出错。

原始applications.properties文件:

spring.jpa.database=POSTGRESQL
spring.datasource.platform=postgres
spring.jpa.show-sql=true
spring.jpa.hibernate.ddl-auto=create-drop
spring.database.driverClassName=org.postgresql.Driver
spring.datasource.url=jdbc:postgresql://localhost:5432/mydb
spring.datasource.username=foo
spring.datasource.password=bar

以上是我在application.yml文件中到目前为止所做的:

spring.jpa:
  database: POSTGRESQL
  hibernate.ddl-auto: create-drop
  show-sql: true

spring.datasource:
  platform: postgres
  driverClassName: org.postgresql.Driver
  url: jdbc:postgresql://localhost:5432/mydb
  username: foo
  password: bar

我在文件类型之间的翻译中遗漏了什么吗?

3 个答案:

答案 0 :(得分:22)

您需要将属性名称中的每个.字符视为yaml文件中的级别:

spring:
  jpa:
    database: POSTGRESQL
    show-sql: true
    hibernate:
      ddl-auto: create-drop
  datasource:
    platform: postgres
    url: jdbc:postgresql://localhost:5432/mydb
    username: foo
    password: bar
    driverClassName: org.postgresql.Driver

编辑:建议编辑,谢谢。实际上driverClassName属性应该在spring.datasource之下。但是,此答案的目的是显示properties文件如何转换为yaml格式。所以我已将driverClassName属性更改为正确的路径,这不是从propertiesyaml的转换的一部分。

答案 1 :(得分:4)

postgresql

application.yml 文件

Spring DATASOURCE(数据源自动配置和数据源属性)

spring:
  datasource:
    driver-class-name: org.postgresql.Driver
    username: postgres
    password: root
    url: jdbc:postgresql://localhost/postgres
    platform: postgres
    initialization-mode: always
    continue-on-error: true
  jpa:
    show-sql: true
    generate-ddl: true
    hibernate:
      ddl-auto: create
    database: postgresql

答案 2 :(得分:2)

请增加其他答案(Z0lt @ n的答案)

但是要粘贴给以后的读者... sql服务器版本。

spring:
  jpa:
    show-sql: true
    hibernate:
      ddl-auto: update
    properties:
      hibernate.jdbc.batch_size: 20
      hibernate.cache.use_query_cache: false
      hibernate.cache.use_second_level_cache: false
      hibernate.cache.use_structured_entries: false
      hibernate.cache.use_minimal_puts: false
  datasource:
    #SPRING_DATASOURCE_URL environment variable will be something like -> jdbc:sqlserver://MySqlServer\\MyInstance:1433;DatabaseName=MyDbName;
    url: ${SPRING_DATASOURCE_URL}
    username: ${SPRING_DATASOURCE_USERNAME}
    password: ${SPRING_DATASOURCE_PASSWORD}
    driverClassName: com.microsoft.sqlserver.jdbc.SQLServerDriver

和Maven条目

    <dependency>
        <groupId>com.microsoft.sqlserver</groupId>
        <artifactId>mssql-jdbc</artifactId>
        <version>7.0.0.jre8</version>
    </dependency>

APPEND

这似乎是类名称的“标准”名称。

SPRING_DATASOURCE_DRIVER-CLASS-NAME

当然,在我的示例中,您将使用:

com.microsoft.sqlserver.jdbc.SQLServerDriver

现在,一些春季,springboot,环境变量伏都教警报。

有时候,当为某些命令行项指定环境变量时,我将不得不更改连字符并使其下划线。 (又名“ SPRING_DATASOURCE_DRIVER-CLASS-NAME”与“ SPRING_DATASOURCE_DRIVER_CLASS_NAME”

-e下方通常表示“通过命令行传递环境变量值”

MyCommandLineProgram.exe -e SPRING_DATASOURCE_URL="jdbc:sqlserver://myServerName:1433;DatabaseName=MyDB;" -e SPRING_DATASOURCE_USERNAME="myUserName" -e SPRING_DATASOURCE_PASSWORD="myPassword" -e SPRING_DATASOURCE_DRIVER_CLASS_NAME="com.microsoft.sqlserver.jdbc.SQLServerDriver"

有一些伏都教你。

那些对日志记录(logback.xml)问题感兴趣的人,也许也想在这里找到我的答案:

Spring Boot Logback DB Appender Properties