DBViewer Plugin for Eclipse とは

DBViewer Plugin for Eclipse(以下DBViewer)は、Eclipse(統合開発環境)を拡張するためプラグインです。
Eclipseに「データベース・フロントエンド」機能を提供します。(JDBCドライバーを使用しています)
DBAの方よりも開発者(Developer)の方をターゲットに機能を提供しています。
※Microsoft AccessやExcelには接続できません




2008年6月25日水曜日

[本日のメモ]SAStrutsとSeasar2のAOPについて


SAStruts


@ActionFormが無い場合、Actionのpublicフィールドに、リクエストパラメータと同名
のフィールドがあると、上書きしようとする問題がある。

DI用のフィールドは、protectedにして、@Resourceをつけることが推奨になるそうです。
※もともと、今のプロジェクトでは@ActionFormを必須で考えているから大丈夫。

リクエストインターセプタは、Actionのpublicメソッド全てが対象となる。
※finalメソッドは除きます。
@Executeの付いたメソッドだけ、インターセプトする場合は、Fieldに対して
Executeアノテーションを取得できるかチェックすることで分かる。
※他にいい方法があるのかもしれないですが・・・

SAStrutsでは、ネストしたプロパティに対するValidationは行われません。
例えば、
a.DTOのフィールドにDTOを持つケース
b.DTOのフィールドにDTOのListを持つケース

これらに対して、@Requiredや@Maxlengthなどのアノテーションによる
Validationを行う場合はSAStrutsを独自に拡張する必要があります。

ちなみに、通常のStrutsでは、a.やb.のケースでも対応できた記憶があります。
※validwhenのXML記述で、property[]のような記述ができます。

拡張(カスタマイズ)で注意しておかなければいけないのが、b.への対応です。
ActionCustomizerにあるsetupValidationメソッドは、対象画面への初期表示時にしか
呼ばれません。(性能を考えているのだと思います)

b.の場合、画面の状況によってListのサイズが変わるため、リクエスト毎に
setupValidation相当のことをする必要があります。(もっと良い方法があるのかもしれません)

また、エラーメッセージも何行目がエラーなのか分かるように実装する必要もありますし、
@Validwhnアノテーション相当を独自で実装する必要もでてきます。



Seasar2のAOP


finalクラスにはAOPの適用はできない
finalまたはstaticメソッドにAOPは適用できない
Seasarに限った話ではなく、おそらく他のAOPも同じだと思う。(調べたわけではありません・・・)

1 件のコメント:

cypher256 さんのコメント...

一応、AOP 自体には、static だとか final だとか制限はないと思いますよ。
http://d.hatena.ne.jp/cypher256/20060401/1184986509