37

Grails 1.x では、grails.config.locationsディレクティブを設定することにより、外部構成ファイルを使用できます。(JNDI をセットアップせずに) Datasource.groovy でデータベース構成を外部化するために利用できる同様のアプローチはありますか?

アプリケーションの外部の単純な構成ファイルで DB 資格情報を構成できると便利です。

前もって感謝します!

4

4 に答える 4

52

データソース構成を外部化する方法として、grails.config.locations で指定されたプロパティ ファイルを使用できます。以下は、私が通常 Grails プロジェクトをセットアップする方法です。

私の DataSource.groovy では、本番環境用にこれを指定します。

  ....
  ....
  production {
    dataSource {
        dbCreate = "update"
        driverClassName = "com.myorg.jdbcDriverNotExists"
        url = ""
        username = ""
        password = ""
    }
  }
  ....
  ....

Config.groovy で外部プロパティ ファイルを指定します。

grails.config.locations = [ "classpath:app-config.properties"]

プロパティ ファイル (grails-app/conf/ に保存) で、実際のデータソース情報を指定します。

dataSource.driverClassName=oracle.jdbc.OracleDriver
dataSource.url=jdbc:oracle:thin:@host:port:sid
dataSource.username=sa
dataSource.password=secret

また、Config.groovy にある他の値をオーバーライドする方法として、プロパティ ファイルを使用します。アプリのデプロイ時にデータソース情報を変更する必要がある場合は、/WEB-INF/classes/app-config.properties ファイルを編集して再起動するだけです。

于 2009-06-10T01:58:44.420 に答える
25

上記の答えは、実際には構成を外部化するものではありません。彼は近くにいますが、構成はまだアプリケーションに存在しています。アプリケーション/サーバーの起動時にJVM環境変数を使用して、外部構成が存在するアプリケーションの外部の場所を指します。config.groovyファイルの環境変数を読み取り、それを使用して外部構成ファイルを取得します。このようなもの:

def extConfig = System.properties.getProperty('ENVVAR');
grails.config.locations = [ "file:${extConfig}/${appName}-config.groovy"]
于 2010-03-26T08:57:20.500 に答える
1

私にとってこれはうまくいきません。環境変数を取得します。

より良い使用:

System.getenv().get("ENVVAR").toString()
于 2011-07-29T08:49:46.620 に答える