asphalt2-container v0_3_00 リリース

asphalt2-container(CSSを使用したFlexDIコンテナ)に機能を追加しました。

init-methodの引数

前のリリースで、初期化後に呼び出ししたいメソッドを設定できるようにしましたが、そのメソッドの引数を取れる様にしました。
例えば、

public function init(bar:BarService,foo:FooService)

というメソッドを用意しておき、CSS

init-method:"init";

と記述すると、初期化後にinitメソッドを呼び出します。


この際、コンテナがメソッド引数の型を読み、その型を使って、コンテナからbeanを取り出して引数として渡してくれます。
プロパティ設定がめんどくさい場合は、この初期化メソッドに必要なbeanを列挙しておくと便利と思います。

initネームスペース

id:shot6さんから、ネームスペースでアノテーション的な設定出来るだろJK、と言われたので、作成しました。
例えば、

import asphalt2.factory.init;
public class HogeImpl Implements Hoge{
 init function hogeInit(foo:FooService,bar:BarService):void{
 }
}

というように、initネームスペースをつけたfunctionを用意しておき、設定ファイルに

Hoge{
  bean-type:ClassReference("test.HogeImpl");
}

として、getBeanByType(Hoge) すると、beanインスタンス化後に、hogeInitを呼び出してくれます。
引数はinit-methodと同様、BeanFactoryから解決します。

使い方としては、Javaの@Injectや@Autowiredアノテーションのようなイメージです。

ほんとはメタデータのほうがかっこよかったのですが、コンパイラーの設定が必要だったり、まだ挙動不審なところがあるため、ひとまずネームスペースで作成しました。

BeanFactoryの戻り値の変更

getBean()の戻り値の宣言が「*」の場合、型キャストしなくてもいい事に気がついたため、BeanFactoryの定義を

function getBean(beanName:String):Object;
function getBeanByType(clazz:Class):Object;

から

function getBean(beanName:String):*;
function getBeanByType(clazz:Class):*;

に変更しました。

var hoge:Hoge = beanFactory.getBeanByType(Hoge);

のように使用できます。

使い方説明

READMEファイルを整形して、使い方wikiに乗せました。

ダウンロード

ダウンロードは以下から。
サイト http://code.google.com/p/asphalt2/
Featured Downloadsから、asphalt2container_v0_03_00.zipをダウンロードしてください。
これ自体がeclipseプロジェクトになっています。
ライブラリだけ使う場合は、bin/asphalt2container.swcをプロジェクトにいれ、パスを通してください。
SVNでチェックアウトしたい場合は、
http://asphalt2.googlecode.com/svn/trunk/asphalt2container-project/asphalt2container/
をチェックアウトしてください。
また
http://asphalt2.googlecode.com/svn/trunk/asphalt2container-project/asphalt2container-test/
がテストプロジェクトになっていますので、こちらももっていくといいと思います。