grails:spring:resources.groovy - 使用和不使用ref()重新定义bean之间是否有任何区别

时间:2015-03-19 12:39:53

标签: spring grails groovy resources

帮助我解决这个小小的困惑,因为我不熟悉grails并使用spring来处理grails

secondBean中的ref to firstBean和resources.groovy中的thirdBean之间是否有任何区别

beans = {

    firstBean(someclass)

    secondBean(someotherclass) {
        property = firstBean
    }

    thirdBean(someotherclass) {
        property = ref(firstBean)
    }
}

1 个答案:

答案 0 :(得分:1)

在你的例子中几乎没有任何区别。你基本上得到了你刚刚定义的对象。因此,只有在您可以订购代码的情况下,这才有效,所以这可行,如果裁剪在您的resources.groovy内。更常见的情况是使用带有字符串的ref,这可能是“转发参考”。 E.g。

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

    b1(Expando)

    print b1
    print ref(b1)
    print ref("b1")
}

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