CybozuのDIコンテナ Azalea

from 山本さんのblogより
http://blog.cybozu.net/dev/files/dic.htm

MVCでのレイヤー構成では、レイヤーごとに開発者が異なるのが普通です。そのような状況ではたった一つのコンテナで全レイヤーのオブジェクトを管理するのは、作業範囲が重複することが問題となります。逆にレイヤーごとにコンテナを用意することにすると、下位のレイヤーに依存しているオブジェクトの依存関係を設定できないことが問題となります。

この問題の解決のため、CB_LWContainer は下位レイヤーのコンテナをベースコンテナとして持つことが可能になっています。ベースコンテナを持つコンテナは、自分が管理していない識別子のオブジェクトを指定されると、ベースコンテナに問い合わせます。

レイヤードコンテナについての話が素晴らしいなぁ。コンテナの分割についての話は、あまりJavaの世界でも聞かないので(コンテナの機能としてはあるのですが)。

プロジェクトが大きくなってくると、コンポーネント単位でコンテナを分割したくなるわけですが、その場合、「コンポーネント + レイヤ」で分割するのが一般的なんでしょうか。みなさん、どうされてるのかなぁ。

コンポーネント単位だと、殆ど全員(少なくともコンポーネントのリーダーは)がコンテナを使いこなせないといけなくなるので、なかなか上手く運用できないなぁと思っています。管理する設定ファイルの数が増えてしまうのも少し困っていたり。