duranさんからの意見

http://d.hatena.ne.jp/duran/20060818

id:matobatさんが作られているS2Xworkですが、XWorkActionアノテーションの書き方についてちょっと物申す。みたいな。悪気はないですよ。

今まで意見が少なかったので利用されている方の意見は大歓迎ですよ。

えっと、クラスに全て書くよりもメソッド単位で書く方が分かりやすくないですかねぇ?

クラスの定義にしている理由はいくつかあります。

  • XWorkの思想がコマンドパターンなので原則1クラス1アクションであるということ
  • 真似した(^^;無設定Strutsがクラス単位で書いていたこと
  • メソッド単位で書くとアノテーションの探索に少しだけ処理時間が増えそう

ただひがさんの書かれているPageクラスっぽくActionを使おうとすると
メソッド単位に設定出来た方が良いのかなとも思いますので、メソッド単位でも書けるようにしてみます。

あと、diconファイルを追加するだけでObjectFactoryが入れ替わる?と思いますが、
webwork.propertiesのwebwork.objectFactoryはspringのままですよね?ちょっと気持ち悪い気がするんですよね。

まずwebwork.propertiesのwebwork.objectFactoryのデフォルトはspringじゃなくて設定なしになっています。
なのでwebwork.propertiesのwebwork.objectFactoryはspringのままと言うことはないです。

一応diconに定義している理由としては以下の通りです。

  • webwork.propertiesで指定するとWebWork2に依存するため他のXWorkを使用しているフレームワークでは別の方法が必要になってしまう
  • S2OjectFactoryにパラメータを設定するのにdiconファイルに書いた方が都合が良い

とはいえwebwork.propertiesで指定する方法も選べるようにしたいので、S2OjectFactoryにデフォルトコンストラクタを追加しました。
なので1.0-rc2以降であれば以下のように書けば使えます。(プロパティはデフォルトの通りですが)

webwork.objectFactory=org.seasar.xwork.S2ObjectFactory