autoinjectな仕組みの導入


いろいろ迷いましたが、autoinject(既存DIコンテナでいうところのautowiredですね)を導入することにしました。
既存のDIコンテナでも、autoinjectについてはその方針が様々です。


LucyはT2プロジェクトのメインポリシである「明示的であれ」を極力遵守したいので、
autowiredもその形はかなり限定的なものになります。
現状が最終仕様になるかはまだわかりませんが、現状autowiredを指定してもプロパティのみの
インジェクトになります。つまりコンストラクタインジェクションはautowiredではうごきません。
このあたりはバランスの問題ですが、出来るだけ明示的にわかる、かつあまり複雑な動きを
autoinjectではさせたくないので、プロパティのみと限定しています。


想定では、既に開発してしまったコンポーネント以外は出来るだけアノテーションまたは設定ファイルで
ほとんどカバーされるであろうということで、この仕様に落ち着きました。
また、あるコンポーネントがautoinjectで登録されたか、などどうやって登録されたかわかるようには
していきたいと思います。ひとまずautoinjectされたかどうかはわかるようにしておいた。
これはどこかでユーティリティ的に検査できたほうが嬉しいのかな。


ということで、SNAPSHOTリリース。


commons 0.5.1-SNAPSHOT


lucy core 0.5.1-SNAPSHOT


lucy aop 0.5.1-SNAPSHOT


最近T2が出来てない・・・・やらねば。