新しいGroovy Bean Definition DSLで現在見られる唯一の欠点は、クロージャー内の Bean を依存関係の順序で宣言する必要があることです。たとえば、これが機能している間:
beans {
repository(RepositoryImpl)
service(ServiceImpl) {
repository = repository
}
}
これはうまくいきません:
beans {
service(ServiceImpl) {
repository = repository
}
repository(RepositoryImpl)
}
これは、クロージャー内のコードが行ごとに実行されたためです。
これは、Spring では慣れていないことです。XML 定義は 1 つの DOM として解析されます。Java 構成では、Bean 定義はメソッドであるため、宣言の順序は重要ではありません。
Java 構成 (Bean ごとのクロージャー/メソッド) を模倣するために、このクロージャーを壊すためにいくつかの努力をしましたが、付属のコードは非常に醜く冗長でした。
この閉鎖を複数の順序に依存しないコード単位にリファクタリングする方法を知っている人はいますか?
PS この定義スタイルは Grails から来たものだと理解しているので、Grails コミュニティはすでに答えを持っているのではないでしょうか?