2

Grailsを使用してアプリを開発していますが、どこかに保存したいアプリ全体の構成設定がいくつかあります。私が考えた唯一の方法は、構成値を格納するドメインクラスを作成し、そのドメインクラスをクエリするサービスを使用することです。私が見ている問題は、そのドメインクラスのインスタンスが1つしかないということですが、その制限を適用するものは何も見つかりませんでした。

私が気付いていない可能性のあるアプリ自体の構成を保存するための他のベストプラクティスがあるかもしれません。すべての提案を歓迎します。

編集:設定はアプリ内から構成可能であると想定されています。

4

4 に答える 4

7

特別な場所があります:/grails-app/conf/Config.groovy。そこに次のような値を追加できます。

my.own.x=1

次の方法で値を読み取ります。

def x = grailsApplication.config.my.own.x

詳細については、ドキュメントを参照してください:http: //grails.org/doc/latest/guide/conf.html#config

于 2012-06-01T17:30:37.570 に答える
5

そのためのプラグインがあります:設定my.own.xさまざまなタイプ(文字列、日付、BigDecimal、整数)のような名前付き設定を作成でき、それらを管理するための基本的なCRUDページを提供します。

いずれかのgspから設定にアクセスできます。

<g:setting valueFor="my.own.x" default="50" encodeAs="HTML"/> 

またはコントローラー/サービス/ドメイン

Setting.valueFor("my.own.x", 50)

私はいくつかのプロジェクトでそれを使用していて、それはうまくいくと思います。

于 2012-06-01T18:12:51.227 に答える
2

カスタムバリデーターを介して、単一ドメインクラスのdbエントリを適用できます。

// No more than one entry in DB
class MasterAccount {
    boolean singleEntry = true
    static constraints = {
         singleEntry nullable: false, validator: { val, obj ->
              if(val && obj.id != getMasterAccount()?.id && MasterAccount.count > 0){
                    return "Master account already exists in database"
              }
         }
    }
    MasterAccount static getMasterAccount(){
         MasterAccount.list()?.first()
    }
}

その構成と永続性をに延期することができますBootstrap.groovy。これにより、と同じ効果が得られます。Config.groovy

于 2013-07-24T07:29:55.163 に答える
0

1.3。*を使用している場合は、grails dynamic-configプラグイン(http://www.grails.org/plugin/dynamic-config)を試すことができます。「このプラグインを使用すると、アプリケーションを再起動せずに構成プロパティを変更できます。Config.groovyの値は、アプリケーションの実行時にデータベースに保持されます。プラグインのインストール後初めてです。」

grails2.0。*プロジェクトで使用したことはありません。

于 2012-06-05T10:53:05.073 に答える