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);
WebWork2のリリース予定
http://jira.opensymphony.com/secure/BrowseProject.jspa?id=10030&report=roadmap
残る項目は10個ほど。リリースはもうすぐのようです。