4

私はgrailsサービスを持っています:

MyService {   
   def sessionFactory    
   void someMethod() {
     //...
     sessionFactory.currentSession.createSQLQuery(sql);
     //...    
   } 
}

groovyスクリプト(src / groovyにあります)からこのサービスを呼び出したいです。grailsコマンドを介して呼び出します-grailstestrun-script src \ groovy\CallMyService.groovy。

この方法で呼び出された場合、sessionFactoryはnullになります(統合テストとして実行すると正常に機能します)。しかし、スクリプトを介して呼び出したいと思います。sessionFactoryをサービスに注入するにはどうすればよいですか?RunScript.groovyを変更してみました。たとえば、次のようになります。

def sessionFactory = appCtx.getBean("sessionFactory")
def session = SessionFactoryUtils.getSession(sessionFactory, true)
TransactionSynchronizationManager.bindResource(sessionFactory, new SessionHolder(session))

しかし、それは役に立ちませんでした。助けていただければ幸いです。

4

1 に答える 1

3

で実行されるスクリプトではrun-script、次のコマンドでサービスを取得できるはずです。

myService = ctx.myService

Springがサービスを管理している場合は、sessionFactoryが自動的に初期化されます。

于 2012-08-22T18:13:31.933 に答える