我意识到Grails服务类是Spring管理的单例.我也知道你可以通过在camel情况下使用serviceClassName声明一个本地def来引用另一个服务类.让我感到惊讶的是,我似乎无法像这样一起交叉参考服务类
class FirstService {
def secondService
...
}
class SecondService {
def firstService
...
}
Run Code Online (Sandbox Code Playgroud)
这对每个人都是真的,还是我在......部分的某个地方搞砸了?
Tod*_*odd 16
当存在循环引用时,Grails无法注入.实际上你应该得到一个例外FactoryBean is not fully initialized yet
.有一个关于这个的JIRA问题,他们说他们不会解决这个问题,因为它更多地与Spring有关而不是Grails(http://jira.grails.org/browse/GRAILS-5080)
但是,JIRA中引用了一种解决方法,我可以验证是否适用于Grails 2.0.RC1.在SecondService中,创建它protected def firstService
并在其def grailsApplication
下面添加,然后添加方法def initialize() { this.firstService = grailsApplication.mainContext.firstService }
.最后,在BootStrap.groovy中,添加def firstService
然后在init
闭包中添加secondService.initialize()
.不是一个漂亮的解决方案,但这将使你想要它的所有东西都连接起来.
归档时间: |
|
查看次数: |
2625 次 |
最近记录: |