[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 メーリングリストの案内