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が出来てない・・・・やらねば。