2

再コンパイルせずに値を変更する必要があるため、非コントローラーまたは taglib クラスの外部構成を作成しようとしています。ConfigurationHolder と ApplicationHolder が非推奨になったので、これに対する私のオプションは何ですか?

私は約3時間グーグルをしましたが、これらのクラスが廃止されて以来、誰かが思いついたのはDIを使用しているだけのようです。ただし、この構成を何らかの形で WAR ファイルの外部にする必要があるため、何か不足していない限り、それが役立つかどうかはわかりません。

ありがとう

4

2 に答える 2

1

デフォルトの設定ファイルの最初の行を見てください...

このコードのコメントを外すと、アプリケーションの起動時に読み取られる外部構成が取得されます。

したがって、再コンパイルする必要はありませんが、構成が変更された場合はアプリケーションを再起動する必要があります。多くの管理者が一晩でアプリケーションサーバーを自動的に再起動するので、これは大きな問題ではないはずですよね?

// locations to search for config files that get merged into the main config
// config files can either be Java properties files or ConfigSlurper scripts

// grails.config.locations = [ "classpath:${appName}-config.properties",
//                             "classpath:${appName}-config.groovy",
//                             "file:${userHome}/.grails/${appName}-config.properties",
//                             "file:${userHome}/.grails/${appName}-config.groovy"]

// if(System.properties["${appName}.config.location"]) {
//    grails.config.locations << "file:" + System.properties["${appName}.config.location"]
// }

/ src / groovy内から構成にアクセスするには、次の質問を参照してください。Grails2.0でGrails構成にアクセスするにはどうすればよいですか。

ところで:はい、configurationHolderは非推奨ですが、それでも機能します:-)

于 2012-06-12T07:13:28.027 に答える
0

js3v から得た応答に基づいて、設定プラグインを確認することをお勧めします。これらのタイプのアイテムを入力するための非常に優れた方法と、それらを管理するための基本的な CRUD インターフェイスを提供します。String、Integer、Date、および BigDecimal 型を使用できます。それらをセグメント化する名前を作成し ( admin.email.defaultGreeting、 または などbanking.defaultInterestRate)、次のように gsp または controllers/services/domain クラスでそれらにアクセスできます。

//gsp
<g:setting valueFor="admin.email.defaultGreeting" default="Hello!" encodeAs="HTML"/>

//Other
import org.grails.plugins.settings.*
Setting.valueFor("admin.email.defaultGreeting", "Hello!")
于 2012-06-12T18:54:09.120 に答える