web-dev-qa-db-fra.com

Base de données application.yml pour le démarrage Spring à partir de applications.properties

J'ai une application de démarrage Spring fonctionnelle qui se connecte à une base de données Postgres. Le projet est configuré avec un fichier application.properties, mais j'aimerais passer à un fichier application.yml. Cependant, lorsque j'effectue le changement, mon application présente des erreurs lors de la tentative de connexion à la base de données.

Fichier applications.properties d'origine:

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

Et voici ce que j'ai jusqu'à présent dans le fichier 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

Me manque-t-il quelque chose dans la traduction entre les types de fichiers? 

5
user3051261

Vous devez traiter chaque caractère . dans les noms de propriétés comme des niveaux dans le fichier 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

EDIT: des modifications ont été suggérées, merci pour cela. La propriété driverClassName devrait en réalité être sous spring.datasource. Cependant, le but de cette réponse était de montrer comment un fichier properties est converti au format yaml. J'ai donc changé la propriété driverClassName pour qu'elle soit sur le bon chemin, cela ne fait pas partie de la transformation de properties en yaml.

16
Zoltan

S'il vous plaît upvote l'autre réponse (réponse de Z0lt @ n)

Mais coller ici pour les futurs lecteurs ... une version serveur 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

et entrée maven

    <dependency>
        <groupId>com.Microsoft.sqlserver</groupId>
        <artifactId>mssql-jdbc</artifactId>
        <version>7.0.0.jre8</version>
    </dependency>
0
granadaCoder