Struts Spring Plugin

ソースファイルがたった2つオープンソースプロダクト。これなら理解できる!ということでひとこと。
これを使うとActionをBeanFactoryで管理できるようになる。すなわちActionはSpringのAPIを使わずにSpringのBeanFactoryによってInjectionされた値を使うことができる。

org.twdata.struts.SpringPlugIn
StrutsのPlugInインタフェースをimplementsしたクラス。設定ファイルからBeanFactoryをつくってServletContextにくっつける。
org.twdata.struts.SpringAction
Actionを拡張したクラス。ProxyパターンのProxy役(だと思う)。struts-config.xmlで呼び出されるように設定する。呼び出されると次の手順を踏む。1)ServletContextからBeanFactoryを取得する。2)BeanFactoryからActionを取得する。3)本物のActionを実行する。

簡単に書けばこういうことが実現できるようになる。


public class HogeAction extends Action {
// BeanFactoryによってinjectionされる
  private Hoge hoge = null;

public void setHoge(Hoge hoge) {
this.hoge = hoge;
}

public ActionForward execute
(ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response) throws Exception {

String something = hoge.getSomething();
}
}

どうだろう?便利かな?