J'essaye de paramétrer mon fichier application.yml
afin que je puisse le mettre en dépôt github avec mon projet, mais sans révéler les détails de connexion à la base de données. Je veux utiliser les variables d'environnement système pour le faire. J'utilise OS X El Capitan.Spring Boot - en utilisant des variables d'environnement dans application.yml
je mets les lignes suivantes dans mon .bash_profile
:
export JDBC_TODO_USER=<my-username>
export JDBC_TODO_PASS=<my-password>
et suivantes lignes dans mon application.yml
:
spring:
datasource:
username: ${JDBC_TODO_USER}
password: ${JDBC_TODO_PASS}
J'ai aussi essayé
spring:
datasource:
username: ${JDBC.TODO.USER}
password: ${JDBC.TODO.PASS}
Ces deux me donnent une erreur au début de l'application: java.sql.SQLInvalidAuthorizationSpecException: Could not connect: Access denied for user '${JDBC_TODO_USER'@'<my-ip-address>' (using password: YES)
Bien sûr, quand je remplace ${JDBC_TODO_USER}
avec mon nom d'utilisateur et ${JDBC_TODO_PASS}
avec mon mot de passe alors tout fonctionne très bien. Il semble que Spring ne comprend pas que je me réfère à des variables d'environnement. Ai-je besoin de faire une configuration supplémentaire pour le faire fonctionner?
Comme je l'ai écrit dans ma propre réponse, le problème avec Eclipse ne pas voir les variables défini dans '.bash_profile'. J'ai remarqué que quand j'ai couru 'mvn spring-boot: run' dans Terminal et l'application a démarré sans aucun problème. J'ai dû définir ces variables dans Run Configuration dans Eclipse pour que cela fonctionne. Mais merci d'indiquer d'autres façons de transmettre ces informations d'identification! –
Cela fonctionne également lors de l'utilisation d'un fichier de propriétés Java. Je voudrais juste souligner que lorsque vous utilisez des variables d'environnement, vous devez indiquer clairement qu'elles existent à l'avance (par exemple, faites attention à Win env). – reim