Utilizzo della variabile env in application.properties di Spring Boot

Stiamo lavorando su un’app Web Spring Boot e il database che stiamo utilizzando è MySql ;

Il problema che abbiamo come potresti già aver capito è che:

  • in application.properties non riusciamo a codificare le informazioni MySql. Poiché il nostro progetto sarà eseguito in 3 diversi posti ( locale , Jenkins e OpenShift ), dobbiamo rendere dinamico il campo dell’origine dati in application.properties (sappiamo che ci sono diversi modi per farlo, ma stiamo lavorando su questa soluzione per ora) .

     spring.datasource.url = spring.datasource.username = spring.datasource.password = 

La soluzione che abbiamo creato è la creazione di una variabile di ambiente di sistema localmente e in Jenkins vm (nominandoli allo stesso modo di OpenShift) e assegnando loro i valori corretti rispettosamente:

 export OPENSHIFT_MYSQL_DB_HOST="jdbc:mysql://localhost" export OPENSHIFT_MYSQL_DB_PORT="3306" export OPENSHIFT_MYSQL_DB_USERNAME="root" export OPENSHIFT_MYSQL_DB_PASSWORD="123asd" 

Lo abbiamo fatto e funziona. Abbiamo anche verificato con Map env = System.getenv(); che le variabili di ambiente possono essere trasformate in variabili java come tali:

 String password = env.get("OPENSHIFT_MYSQL_DB_PASSWORD"); String userName = env.get("OPENSHIFT_MYSQL_DB_USERNAME"); String sqlURL = env.get("OPENSHIFT_MYSQL_DB_HOST"); String sqlPort = env.get("OPENSHIFT_MYSQL_DB_PORT"); 

Ora l’unica cosa che rimane è che dobbiamo usare queste variabili java nella nostra application.properties e questo è ciò con cui stiamo avendo problemi.

In quale cartella e in che modo è necessario assegnare le variabili password , userName , sqlURL e sqlPort per application.properties per poterle vedere e come includerle in application.properties ?

Abbiamo provato molte cose, una delle quali è:

 spring.datasource.url = ${sqlURL}:${sqlPort}/"nameofDB" spring.datasource.username = ${userName} spring.datasource.password = ${password} 

Nessuna fortuna finora. Probabilmente non stiamo mettendo queste variabili env nella giusta class / cartella e usandole correttamente in applicatin.properties .

Il tuo aiuto è molto apprezzato !!

Grazie!