我目前在新Groovy Bean Definition DSL中看到的唯一缺点是必须在依赖顺序中声明闭包中的bean。例如,虽然这有效:
beans {
repository(RepositoryImpl)
service(ServiceImpl) {
repository = repository
}
}
这不起作用:
beans {
service(ServiceImpl) {
repository = repository
}
repository(RepositoryImpl)
}
这是因为关闭代码是逐行执行的。
这是我们在Spring中不习惯的东西 - XML定义被解析为一个DOM,在Java配置中bean定义是方法,因此声明顺序并不重要。
我做了一些努力来打破这个闭包来模仿Java配置(每个bean的闭包/方法),但我带来的代码非常丑陋和冗长。
有没有人知道如何将这个闭包重构为多个与顺序无关的代码单元?
P.S。我知道这个定义风格来自Grails,所以也许Grails社区已经有答案了吗?
答案 0 :(得分:1)
关于使用ref("repository")
的评论是完成您要做的事情的建议。
在示例中使用ref
而不是变量名与使用Spring引用属性进行bean引用相同。
您可以在Grails and Spring的文档部分中阅读有关此内容以及Spring bean构建器DSL的其他功能的更多信息。