我目前在新的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社区已经有了答案?