1

新しい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 コミュニティはすでに答えを持っているのではないでしょうか?

4

1 に答える 1

1

使用に関するコメントref("repository")は、目的を達成するための提案です。例のように変数名の代わりに使用refすることは、Bean 参照に Spring ref 属性を使用することと同じです。

このこと、および Spring Bean ビルダー DSL のその他の機能の詳細については、Grails と Springのドキュメント セクションを参照してください。

于 2014-07-09T08:56:18.503 に答える