grails:spring:resources.groovy-使用和不使用ref()重新定义bean之间有什么区别吗



帮助我解决这个小困惑,因为我是grails的新手,并且正在使用spring 开发grails

secondBean中对firstBean的引用和resources.groovy 中对thirdBean的引用之间有什么区别吗

beans = {
    firstBean(someclass)
    secondBean(someotherclass) {
        property = firstBean
    }
    thirdBean(someotherclass) {
        property = ref(firstBean)
    }
}

在您的示例中几乎没有任何区别。你得到的基本上是你刚刚定义的对象。因此,只有当您可以对代码进行排序时,这才有效,并且refs正好在resources.groovy中时,这才会有效。更常见的情况是将ref与字符串一起使用,这可能是"正向引用"。例如

beans = {
    // fails! print b1
    // fails! print ref(b1)
    print ref("b1")
    b1(Expando)
    print b1
    print ref(b1)
    print ref("b1")
}

我会使用ref(<String>)作为衡量标准,为底层的spring注入框架提供处理其依赖关系的最简单方法(例如,只需要在需要的时候创建组件)。

最新更新