プレゼンテーションフレームワークとの連携
IoCコンテナとプレゼンテーションフレームワークとの連携が
難しくなる最大の原因は、IoCコンテナは、コンポーネントの作成を
コンテナがおこなうが、プレゼンテーションフレームワークも
自分が必要なクラスは自分たちで作成するので、
その部分がかみ合わないせいだと思います。
その部分を蜜に結合させようとすると、プレゼンテーションフレームワークに
かなり手を入れることになり望ましくありません。
そこで、考えてみました。
インスタンスの作成は、プレゼンテーションフレームワークにまかせ、
IoCコンテナは、Dependency Injectionに専念すればよいと。
具体的に、S2Containerに次のメソッドの追加を考えています。
injectDependency(Object component)
injectDependency(Object component, Class componentClass)
injectDependency(Object component, String componentName)
例えば、Tapestryなら、ページ名と同じ名前で、コンポーネントを登録して
おき、あるタイミングでS2Container.injectDependency()を呼び出すのです。
ゴールデンウィーク中にTapestryのソースを読んで、適切な方法を考えたいと
思います。連携方法もS2Containerに限定することなく、
他のIoCコンテナとも連携できるようにインターフェースとして
切り出す必要があると思ってます。
Tapestryのチームとも連携取る必要がありますね。