ドメインオブジェクトまたは静的スコープからConfig.groovy情報を取得するにはどうすればよいですか?私はConfigurationHolder.config。*を使用していますが、これとApplicationHolderは廃止されましたので、私はそれを正しくしたいと思います...しかし、grailsApplicationオブジェクトはDO/staticスコープでは利用できません。grails 2.0.0M1の設定情報をドメインオブジェクトとスタティックスコープで取得していますか?
6
A
答えて
8
私はドメインクラスのメタクラスにgrailsApplication
を追加したいと思いますが、これは私が最終的に2.0について行っていることです。今のところ、BootStrap.groovy
に入力してください。
class BootStrap {
def grailsApplication
def init = { servletContext ->
for (dc in grailsApplication.domainClasses) {
dc.clazz.metaClass.getGrailsApplication = { -> grailsApplication }
dc.clazz.metaClass.static.getGrailsApplication = { -> grailsApplication }
}
}
}
次に、あなたgrailsApplication.mainContext.getBean('foo')
またはちょうどgrailsApplication.mainContext.foo
を経由してgrailsApplication.config
から設定にアクセスし、Spring Beanをすることができます。
1
静的ユーティリティでのみconfigにアクセスしたいと思っていました。 SOの答えのほとんどを検索して読んだ後、私は(誰かのために有用である可能性がある)シンプルなソリューションに付属している:
は、グルーヴィーなのsrc /下ホルダークラスを追加します。
class StaticContext {
static def app;
}
は、ブートストラップのinitで
それを初期化しますclass BootStrap {
def grailsApplication
def init = { servletContext ->
StaticContext.app = grailsApplication
}
def destroy = {
}
}
と静的ユーティリティでアクセスして:
//In my case Solr URL in single ton
def solrUrl = StaticContext.app.config.solr.url
19
Grailsの2 repla同じコンテナ内の複数の異なるWebアプリケーションが親クラスローダー内のGrails JARの単一コピーを共有している場合に安全です(これは、古いホルダーが壊れた場合)。 Grailsの2.2.5で
import grails.util.Holders
// ...
static void foo() {
def configOption = Holders.config.myapp.option
}
1
私は、これは動作しますが見つかりました:
は、ご使用の環境のセクションappropiateで、
grails-app/conf/Config.groovy
であなたの変数を設定します。たとえば、次のようにアクセスするにはenvironments { ... development { ... grails.config.myUrl = "http://localhost:3000" ...
...
:org.hibernate.InstantiationException:
import grails.util.Holders class myClass { ... def static myStaticMethod() { def myVar = Holders.config.grails.config.myUrl ...
関連する問題
- 1. Grailsは子ドメインオブジェクトを取得します
- 2. ベストプラクティス - 静的フィールドでgrailsのドメインオブジェクトを取得しますか?
- 3. grailsのデータベースから情報と画像を取得する
- 4. Grailsの派生プロパティを使用してドメインオブジェクトを取得できますか?
- 5. Grails Spock Pluginを2.0.0M1にインストール
- 6. iOSアプリケーションでセルタワー情報を取得していますか?
- 7. WCFアプリケーションの資格情報を設定していますか?
- 8. RHEL:XMLとしてrpm情報を取得
- 9. デフォルトの資格情報を取得していますか?
- 10. SQLiteDBから選択情報を取得していますか?
- 11. 私のアプリケーションはどこから古い設定情報を取得していますか?
- 12. OpenID - ユーザー情報を取得していますか?
- 13. IPMIプロトコルでサーバー関連情報を取得しています
- 14. mvc 5のカスタムユーザー情報を取得して設定する方法
- 15. facebookでログインsdkの共有設定とユーザーに関する情報を取得
- 16. ドメインオブジェクトのすべてのプロパティの制約を設定しますか?
- 17. facebookユーザーの定数情報を取得
- 18. dtsx xmlファイルから情報を取得しようとしています
- 19. 取得情報
- 20. 設定済みの(webservices.xml)Webサービスハンドラの情報の取得
- 21. Healthkitを使用して医療IDの情報を取得および設定しますか?
- 22. HTTPセッションから情報を取得するGrailsサービスをテストする方法
- 23. 資格情報は、私がorg.apache.commons.httpclient.auth.InvalidCredentialsExceptionを取得しています
- 24. gitサーバーから春のクラウド設定を使用して情報を取得できません
- 25. Swiftでフレームワークバージョンとビルド情報を取得
- 26. バッチリクエストでFacebookのユーザー情報を取得しますか?
- 27. Pythonでシステムのタイムゾーン情報を取得しますか?
- 28. ページからすべての情報を取得していますBeautifulSoup
- 29. 学生としてのMoodle APIからの情報の取得
- 30. サブレポートが通知の情報を取得していません
良いアイデア...しかし、起動時には、に起因する」で失敗します。ブートストラップが実行される前にHibernateが何かをしているように見えるので、test objectqdcore.UserCallFlowをインスタンス化できませんでした(qdcore.UserCallFlowはドメインクラスです)。これを回避するために、安全なderef(例えば、grailsApplication?.config?.qdcore?.servers?.upload?.url)を使用して、Hibernateがハッピーで、ブートストラップが実行され、grailsApplicationが利用できるようにします。ありがとう! – Wayne
しかし、安全なderefをDOで行っても(def grailsApplication; def config = grailsApplication?.config; def String usrv = config?.qdcore?.servers?.upload?.url)私は自分自身をソートアウトするときに投稿します) – Wayne
DOで動作するのは、grailsApplicationの静的スコープと残りのインスタンススコープです。たとえば、クラスUCF {static grailsApplication; def config = grailsApplication?.config; def String usrv = config?.qdcore?.servers?.upload?.url ...}私は他のものに静的スコープを使用することはできません。なぜなら、設定プロパティを取得しようとすると "grailsApplication"がnullであるという例外が発生するからです。おそらく、これはちょっとしたことですが、このプロトタイプアプリケーションではうまくいきます! – Wayne