[cubby-user:145] Re: Cubby on GAEで、DTOを@Injectしたい。
かとちん
[E-MAIL ADDRESS DELETED]
2009年 5月 8日 (金) 10:23:05 JST
加藤です。
染田さん、馬場さん、レスありがとうございます。
> 紛らわしいのでフィールドも走査したほうが良いかと思いました。
> Spring も EJB もフィールドに対して DI できますし。
です!私の望みは、まさしく馬場さんのコメントのとおりです。
昨日、帰りの車中で、以下のようなルールでいけるんじゃないかと
理解しましたが...
1. @SessionScopedなDTOクラスを、ApplicatoinModule内で bind。
ex.)
bind(hogeDto.class);
2. 必要なActionクラス内で @Injectで定義
ex.) @Inject private HogeDto hogeDto;
3. DTOを返すゲッターを作成
ex.) public HogeDto getHogeDto() { return hogeDto; }
やはり、2.をpublicにするだけで 3.が省略できるとスッキリするなぁ
と思う次第です。
ex.) @Inject public HogeDto hogeDto;
誰かが上書きしてしまうとInjectしたものと変わってしまうので、
安全じゃないと言えば、安全じゃないですが、それがいやなら
@Inject setter にすれば良いだけですし、そもそもguiceのAPIで
既存のActionインスタンス引っ張ってきて書き換える手間暇かけないと
変えようもないので、うっかり外から上書きってのもあんまり
なさそうです。
できれば、guice用Cubbyエクステンション的なものができて、
@Injectなプライベートフィールドにもフォームがバインドできたら最強ですが。
ともあれgetFormBeanのフィールドバインディング対応、
期待しています。...って、勝手に期待しちゃうと催促になるので
のんびりと待っています。回避方法は分かりましたので。
cubby-user メーリングリストの案内