[Seasar-user:10026] Re: serviceクラス内のstaticメソッド

Koichi Kobayashi [E-MAIL ADDRESS DELETED]
2007年 8月 22日 (水) 16:00:47 JST


小林 (koichik) です.

Date:    Tue, 21 Aug 2007 16:44:54 +0900
From:    北村 由美 <[E-MAIL ADDRESS DELETED]>
To:       [E-MAIL ADDRESS DELETED]
Subject: [Seasar-user:10001] serviceクラス内のstaticメソッド

> プルダウン等、マスタからコードを取得するだけの処理で、
> 各Pageクラスにセッターインジェクションの記述をするよりは、

Seasar2.4.17 からは public field に DI するように
なったので,Page クラスに setter メソッドを
定義する必要はなくなりました.

public class FooPage {
  public UsersDao usersDao;
  public UsersDxo usersDxo;
  ...
}

のようにするだけで DI されます.

> serviceクラス内にstaticメソッドを定義し、
> 1行でコードのListを返却できるようにしたらどうかという意見がPJ内で出ております。

オススメしません.

> 実装はこういう感じ↓になります。
> DI管理対象のクラスにstaticメソッドを定義すると何か弊害が考えられますでしょうか?

> public String initialize() {
>     setUserPulldown(CodeService.getUsers());
>     return null;
> }

> サービス↓
> public class CodeService {
>     private static UsersDao;
>     private static UsersDxo;
> 
>     public static List getUsers(){
>         return usersDxo.convert(usersDao.selectAll());
>     }
> ・・・DAO,DXOのセッターを定義・・・
> }

CodeService はコンテナからコンポーネントとして
取得されないため,usersDao や usersDxo には
何も DI されません.
そのため,このコードを実行するとヌルポが
スローされます.


P.S.
新規のメールを出す際は,既存のメールにリプライする
形で作成しないようお願いします.
他のスレッドにぶら下がるので見落としやすくなり,
返事が遅れる可能性があります.


--
<signature>
   <name>Koichi Kobayashi</name>
   <e-mail>[E-MAIL ADDRESS DELETED]</e-mail>
</signature>




Seasar-user メーリングリストの案内