数据库application.yml,用于从applications.properties进行Spring引导

数据库application.yml,用于从applications.properties进行Spring引导,spring,spring-boot,database-connection,Spring,Spring Boot,Database Connection,我有一个可以工作的Spring启动应用程序,可以连接到Postgres数据库。我已经用application.properties文件设置了该项目,但希望切换到application.yml文件。但是,当我切换时,我的应用程序在尝试连接到数据库时出错 原始applications.properties文件: spring.jpa.database=POSTGRESQL spring.datasource.platform=postgres spring.jpa.show-sql=true spr

我有一个可以工作的Spring启动应用程序,可以连接到Postgres数据库。我已经用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

我是否在文件类型之间的转换中遗漏了什么

您需要将属性名称中的每个
字符视为
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
下。但是,此回答的目的是说明如何将
属性
文件转换为
yaml
格式。因此,我已将
drivercassname
属性更改为正确路径,这不是从
properties
yaml
的转换的一部分,请对另一个答案进行投票(Z0lt@n(主席的答覆)

但是在这里粘贴给未来的读者。。。sql server版本

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>
当然,在我的示例中,您可以使用:

com.microsoft.sqlserver.jdbc.SQLServerDriver
现在,一些spring、springboot、环境变量voodoo警报

有时,在为某些命令行项目指定环境变量时,我必须更改连字符并使其成为下划线。 (又名“SPRING\u数据源\u驱动程序类名称”与“SPRING\u数据源\u驱动程序\u类名称”

下面的-e一般表示“通过命令行传递环境变量值”

有一些巫术给你

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


postgresql的application.yml文件

Spring数据源(数据源自动配置和数据源属性)
因此,仅指定SPRING_DATASOURCE_URL(和其他)env var对于DATASOURCE来说是不够的?您需要显式设置SPRING.jpa.DATASOURCE.URL参数?所有其他参数可能都有默认值。ddl auto是一个我会显式说明的参数,因为它在生产环境中可能会很危险。
com.microsoft.sqlserver.jdbc.SQLServerDriver
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"
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