2017-12-13 10 views
0

私のマシンにいくつかの単純なdb credをENV変数としてエクスポートしました。Springブートでシステムenv varsをapplication.propertiesにロードしない

export MYSQL_USER=root 
export MYSQL_PASS=pass 

これらを私のプロファイルに動的にロードして、春のブートにしようとしていますが、役に立たないものです。私はこれがアプリケーションがTomCatコンテナの内部で実行されているため、マシンenvの変数から分離されていると考えています。

開発環境アプリケーションのプロパティは、しかし、それはまだ${MYSQL_USER}のリテラルプレーンテキストとして見られています

spring.datasource.username = ${MYSQL_USER} 

ファイル。 Springブートはシステム環境変数のreadg機能を持っていますか?

+0

サンプルプロジェクトを提供できますか?あなたのSpringBootアプリケーションが実行されているプロファイル/ユーザがこれらの値を適切に読み込んでいることを確認してください。たとえば、これらのエクスポートを「/etc/profile.d/mysql.sh」ファイルに追加しましたか? – Pytry

+0

私は単純に上記のようにこれらを端末にエクスポートしましたが、実際にシステム環境変数をSpringブートにロードする方法はわかりません。 –

+0

別の端末を開いて手動でエクスポートせずにこれらの変数をエコーすると、何が表示されますか? – Pytry

答えて

1

また、$ enを使って、私のapplication.properties/ymlにOS環境変数を取得するのと同じ問題がありました。これを解決するために、変数をアプリケーションサーバー(tomcat/jbossなど)に定義しました。それから、application.properties/ymlだけがそれらを取得できます。 これが役立つことを願っています。

+0

あなたはこれをどのようにして説明できますか? –

+0

アプリケーションサーバーによってさまざまな方法があります。 Tomcatの/ bin /で1つのファイルを作成する - setenv.sh-(touch setenv.sh)を開き、(sudo nano setenv.sh)を開き、 #!と入力してください。/bin/sh エクスポートJAVA_OPTS = " - DMYSQL_USER = myuser" – Myth

+0

tomcatを再起動してください: – Myth

0

Profile-specific-propertiesExternal-config

として春ブーツは、あなたが異なる環境で同じアプリケーションコードで作業することができますので、あなたの設定を外部化することができます。あなたはただ一つのenv変数を宣言する必要があり、この場合の構成

を外部化するためにプロパティファイル、YAMLファイル、環境変数とコマンドライン引数を使用することができます。spring.active.profilesと春は、{用途向けで自動的に適切なプロパティファイルを読み込みますプロファイル名} .propertiesテンプレート。

+0

これは質問に答えません。 –

関連する問題