1

我目前在新的Groovy Bean 定义 DSL中看到的唯一缺点是闭包中的 bean 必须以依赖顺序声明。例如,虽然这有效:

beans {
    repository(RepositoryImpl)
    service(ServiceImpl) {
        repository = repository
    }
}

这不起作用:

beans {
    service(ServiceImpl) {
        repository = repository
    }
    repository(RepositoryImpl)        
}

那是因为闭包中的代码是逐行执行的。

这是我们在 Spring 中不习惯的——XML 定义被解析为一个 DOM,在 Java 配置中 bean 定义是方法,因此声明顺序并不重要。

我做了一些努力来打破这个闭包以模仿 Java 配置(每个 bean 的闭包/方法),但是我附带的代码非常丑陋和冗长。

有谁知道如何将此闭包重构为多个与顺序无关的代码单元?

PS我知道这个定义风格来自Grails,所以也许Grails社区已经有了答案?

4

1 回答 1

1

关于 using 的评论ref("repository")是完成您想要做的事情的建议。使用ref而不是示例中的变量名与使用 Spring ref 属性作为 bean 引用相同。

您可以在Grails 和 Spring的文档部分中阅读有关此功能以及 Spring bean 构建器 DSL 的其他功能的更多信息。

于 2014-07-09T08:56:18.503 回答