Grails フィルタからアプリケーションコンテキストにアクセスするにはどうすればよいですか。コントローラを使用して、次のようにすることができます。Grailsフィルタコンストラクタからのアプリケーションコンテキストへのアクセス
def ctx = ApplicationHolder.application.mainContext
ただし、フィルタctxはnullです。
この場合、特にFilterのコンストラクタのアプリケーションコンテキストにアクセスしようとしています。
Grails フィルタからアプリケーションコンテキストにアクセスするにはどうすればよいですか。コントローラを使用して、次のようにすることができます。Grailsフィルタコンストラクタからのアプリケーションコンテキストへのアクセス
def ctx = ApplicationHolder.application.mainContext
ただし、フィルタctxはnullです。
この場合、特にFilterのコンストラクタのアプリケーションコンテキストにアクセスしようとしています。
ホルダークラスは使用しないでください。2.0では廃止され、今後のリリースでは削除されます。
コントローラからアプリケーション・コンテキストにアクセスするための最良の方法、フィルタ、サービス、などGrailsApplicationのための依存性注入を追加することで、すなわち
def grailsApplication
次にあなたが
を経由して、コンテキストを取得することができますdef ctx = grailsApplication.mainContext
Spring Beansに関連するコンストラクタで作業することは珍しいので、可能であればリファクタリングする必要があります。 Grailsの成果物はSpring Beanなので、アプリケーションコンテキストの構築中にインスタンス化されます。
コントローラはほとんどの豆のようにシングルトンではないので少し違うので、コントローラが構築されるまでに(要求ごとに1つずつ)、ホルダが作成されます。しかし、一般的には、GORMの作業、アプリケーションコンテキストへのアクセスなどをコンストラクタで避けるべきです。なぜなら、物事がまだ配線されていない可能性があるからです。