2016-12-14 6 views
0

私はPlay Framework(Java)を使用しており、データベース接続文字列を構築するための設定ファイルで環境変数を使用する方法を理解できません。私は(ユーザー名とパスワードの入力)は、このような環境変数を使用することができるよ中:環境変数からのDB接続文字列の作成

default.username = ${?FU_MAIN_DB_USERNAME} 
default.password = ${?FU_MAIN_DB_PASSWORD} 

私はそれがurl文字列で動作させることができませんよ。おそらくこれはスカラの文字列処理の単純なケースですが、私は行方不明ですが、私はJavaで作業しているので、いくつかの助けをすることができます。

はこれまでのところ、私は、次の形式でurl文字列を試してみましたが、失敗した:

は補間を実行するために、変数名に$を追加しようとしました:

default.url =「JDBC:PostgreSQLの://$$ {?FU_MAIN_DB_HOST}:$$ {?FU_MAIN_DB_PORT}/$$ {?FU_MAIN_DB_NAME} ";

しかし、これは置き換えません。むしろ、文字列をそのように選択します。

default.url = "jdbc:postgresql://${?FU_MAIN_DB_HOST}:${?FU_MAIN_DB_PORT}/${?FU_MAIN_DB_NAME}"; 

これも '$'とすべての括弧を挿入します。それからPHPスタイルのようなものが動くと思ったかもしれません。

default.url = "jdbc:postgresql://${${?FU_MAIN_DB_HOST}}:${${?FU_MAIN_DB_PORT}}/${${?FU_MAIN_DB_NAME}}"; 

しかし、

私はまた、"jdbc:postgresql://".concat(${?FU_MAIN_DB_HOST}) ...のようなものをやってみましたが、これもそのまま '.concat'を挿入します。

最後に、私は「+」演算子を使用して連結を試みたが、私は+のようなシンボルという(私のIDEで)聞いています:などがapplication.confファイルで許可されていません。

どのように、神の名前で、私はそれをすると思いますか?

答えて

1

二重引用符は補間をオフにします。しかし、あなたは://のためにそれをする必要があります。

はたぶんあなたの代わりに一つの大きな環境変数に全部を設定するほうが良いでしょう

default.url = "jdbc:postgresql://"${?FU_MAIN_DB_HOST}":"${?FU_MAIN_DB_PORT}/${?FU_MAIN_DB_NAME} 

を試してみてください。

+0

非常に良い提案ですが、モジュール化しておくことが良いと思います。シンタックスでは、完全な文字列が演算子などなしで生成されていたのはかなり奇妙です。おそらく別の日の謎! :-) – dotslash

+1

さて、引用符はひどいです。特殊文字がなければ、大丈夫でしょう: 'foo = $ {?BASE_DIR}/$ {app.prefix}/tmp/$ {http.hostname}' – Thilo

関連する問題