2011-07-12 8 views
2

Grails フィルタからアプリケーションコンテキストにアクセスするにはどうすればよいですか。コントローラを使用して、次のようにすることができます。Grailsフィルタコンストラクタからのアプリケーションコンテキストへのアクセス

def ctx = ApplicationHolder.application.mainContext 

ただし、フィルタctxはnullです。

この場合、特にFilterのコンストラクタのアプリケーションコンテキストにアクセスしようとしています。

答えて

2

ホルダークラスは使用しないでください。2.0では廃止され、今後のリリースでは削除されます。

コントローラからアプリケーション・コンテキストにアクセスするための最良の方法、フィルタ、サービス、などGrailsApplicationのための依存性注入を追加することで、すなわち

def grailsApplication 

次にあなたが

を経由して、コンテキストを取得することができます
def ctx = grailsApplication.mainContext 

Spring Beansに関連するコンストラクタで作業することは珍しいので、可能であればリファクタリングする必要があります。 Grailsの成果物はSpring Beanなので、アプリケーションコンテキストの構築中にインスタンス化されます。

コントローラはほとんどの豆のようにシングルトンではないので少し違うので、コントローラが構築されるまでに(要求ごとに1つずつ)、ホルダが作成されます。しかし、一般的には、GORMの作業、アプリケーションコンテキストへのアクセスなどをコンストラクタで避けるべきです。なぜなら、物事がまだ配線されていない可能性があるからです。

関連する問題