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