我有grails服务:
MyService {
def sessionFactory
void someMethod() {
//...
sessionFactory.currentSession.createSQLQuery(sql);
//...
}
}
我想从一个groovy脚本(位于src / groovy中)调用此服务。我通过grails命令调用 - grails test run-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))
但这并没有帮助。任何帮助表示赞赏。
答案 0 :(得分:3)
在使用run-script
运行的脚本中,您应该能够通过以下方式获得服务:
myService = ctx.myService
如果spring正在管理您的服务,则应自动初始化sessionFactory
。