PicoとNanoの関係
PicoContainerはIoCコンテナとしてのインターフェイスとデフォルトの実装を提供しています。PicoContainerのみで使用する場合、コンポーネントの登録はJavaコードとして記述しなければなりません。SpringのようなXMLベースの定義ファイルは用意されていないのです。NanoContainerはPicoContainerの別の実装を提供してくれます。具体的には外部ファイルによるコンポーネントの登録をサポートする実装があります。
- XMLベース
- JavaScriptベース
- Jythonベース
XMLベースはSpringに割と近い形式で、setterベースもサポートするようです。
おもしろいのがJavaScriptベースとJythonベースです。コンポーネントの登録処理をJavaScriptなどでかけるようにしようというもの。これが使いやすかどうかは、試してみないとわかりませんが、おもしろアプローチだと思います。
NanoContainerはHPのダウンロードページからはダウンロードできませんでした。。。今のところ自分でビルドするしかないようです。
JavaScript(Rhino)によるコンポーネントの登録
var parentContainer = new PicoScriptable(); with (parentContainer) { var pc = new Packages.org.picoextras.testmodel.WebServerConfigBean(); pc.setHost('foobar.com'); pc.setPort(4321); registerComponentInstance(pc); registerComponentImplementation('org.picoextras.testmodel.WebServer',' XmlCompositionNanoContainerTestCase.OverriddenWebServerImpl.class.getName() + "'); } pico.setPicoScriptable(parentContainer);