[Seasar-user:5279] Re: S2Container を利用した実行クラスについて
Junichi Kato
[E-MAIL ADDRESS DELETED]
2006年 11月 26日 (日) 18:20:45 JST
加藤です。
はじめまして、
私の知識も、まだまだなのですが、以下に参考になる情報を書きます。
Webアプリケーションでは、わざわざ自分でS2のContainerを作らなくても、
以下の方法でS2Containerを作る方法があります。
http://s2container.seasar.org/ja/DIContainer.html#S2ContainerServlet
この設定を行い、
app.diconファイルなどに、EmployeeDao.diconがインクルードされるようにしてください。
(その他、S2Daoに必要なdicon定義も適切に含まれるようにします)
その上で、EmployeeManagerも、diconファイルに定義してください。
public class EmployeeManager {
// S2ContainerServletによってDIされます。
private EmployeeDao employeeDao;
public setEmployeeDao(EmployeeDao employeeDao){
this.employeeDao = employeeDao;
}
public List selectEmployeeInfo(int empno){
return this.employeeDao.findById(empno);
}
}
strutsのアクションクラスで、EmployeeManagerを取得したい場合は、以下のようにすれば取得できるかと思います。
public class HogehogeAction extends Action {
public ActionForward execute(ActionMapping map, ActionForm frm, HttpServletRequest request,
HttpServletResponse response) {
// S2ContainerServletからS2Containerを取り出す
S2Container s2Container = S2ContainerServlet.getContainer();
// EmployeeManagerを取り出す
EmployeeManager employeeManager =
(EmployeeManager)s2Container.getComponent(EmployeeManager.class);
// 以下、省略
}
}
S2Strutsは使ったことがないのですが、以下のようなPOJOのアクションにして、diconに登録しておけば、
EmployeeManager自体も、用意したセッターでDIされるようになると思います。
public class HogehogeAcitonImpl implements HogehogeAction {
// DIされます。
public void setEmployeeManager(EmployeeManager employeeManager){
this.employeeManager = employeeManager;
}
public String doFugafuga(){
List list = this.employeeManager.selectEmployeeInfo(1);
// ... 省略
return "success";
}
}
たぶん、こんな感じでいけると思います。
--
Junichi Kato <[E-MAIL ADDRESS DELETED]>
Seasar-user メーリングリストの案内