DIコンテナ + Eclipseのようなプラグイン管理

1,2ヶ月ほどまえから、Wikiエンジンを作るという業務外の仕事をちょっとずつしてたりします。
まだ、アイディア出しの段階ですが、拡張性などをいろいろ考えていくと、DIコンテナ+プラグイン管理機構というのが思い浮かんできます。

プラグイン管理機構は、Eclipseの仕組みみたいなやつをかんがえてます。あと、プラグインに付随する様々な情報も汎用的に定義できたり。
そして、プラグイン同士の依存性はDIによって解決。Springなんかですと、実装のビーン名や、インタフェースの型によってDIしますが、いま私の中に浮かんでいるのは、プラグインID(Eclipseでの拡張ポイントといったほうが近いかな)によってDIします。

Springなんかですと、システムの設定用XMLファイルに静的にビーン同士の関係を定義します。このため、あとから機能を追加となると、システムの一部である設定用ファイルを変更しなければいけないわけです*1

プラグインの場合、1個のプラグインにそのプラグインが必要な設定が含まれていることが望ましいので、上記のようにプラグインを追加するたびに、システムのファイルを書き換えるというのでは困ってしまいます。
そこで、Eclipseのように拡張ポイントのような概念によって、プラグインを管理し、さらに、他のプラグインの機能はDIによって利用できるようにと*2


SpringやSeasar2等のDIコンテナはもちろん、使いやすいと思うし、好きですが(*´д`*)ハァハァ、いかんせんクラス単位での扱いでしかないのが・・・・いや、私が無知なだけかもしれませんが。

*1:Groovyつかうとか、定義ファイルを特定ディレクトリからリストして、読み出すとかすれば回避できるのかも知れないけどね

*2:Eclipseだと、ただ単に、他のプラグインのJARがクラスパス内にいる程度の動きだったような・・・インタフェースによる型付けを行い、実装オブジェクトがDIされてくるとかってあったけ?