[Seasar-user:12232] Re: s2アスペクト設定について

Koichi Kobayashi [E-MAIL ADDRESS DELETED]
2007年 12月 20日 (木) 19:00:46 JST


小林 (koichik) です.

Date:    Thu, 20 Dec 2007 18:12:32 +0900
From:    Jun S Satoh <[E-MAIL ADDRESS DELETED]>
To:      [E-MAIL ADDRESS DELETED]
Subject: [Seasar-user:12231] s2アスペクト設定について

> s2のアスペクト設定で、あるクラスの持つメソッド全てと指定したく、aspect
> pointcut=".*"と記述したところ、
> 確かにクラス内のメソッド全てに対し、有効になりましたが、そのクラスの上位オ
> ブジェクトが持つメソッドもアスペクトの対象になります。
> 
> 上位のメソッドがアスペクトの対象になるのはそれはそれで良いのですが、「上位
> オブジェクトの持つメソッドを除く全てのメソッド」
> の指定の仕方が分かりません。
> 
> 対応方法ありましたらご教授ください。

「親クラスのメソッドを除外」というような指定は
できません.
除外したいメソッドの名前が特定できるなら,
正規表現の否定先読みを使って

<aspect pointcut="(?!equals|hashCode|toString).*">

のように指定できます.
この例では,equals, hashCode, toString を除いた,
非 final かつ非 static な public メソッドが
AOP の対象となります.

> 下記URL
> http://lists.sourceforge.jp/mailman/archives/seasar-user/2004-October/002797.html
> においても同じ質問がされていますが、
> 現行バージョンにおいても同様におこることであるという認識で間違いないでしょ
> うか。

はい.
現在でも final メソッドは AOP の対象外です.


-- 
<component name="koichik">
    <property name="fullName">"Koichi Kobayashi"</property>
    <property name="email">"[E-MAIL ADDRESS DELETED]"</property>
    <property name="blog">"http://d.hatena.ne.jp/koichik"</property>
</component>



Seasar-user メーリングリストの案内