[Seasar-user:404] Adviceのスタック
B gluegent.com Masataka Kurihara
kurihara
2004年 3月 3日 (水) 13:40:28 JST
栗原です。
まずここ2日みて、Seasarでほしい機能の1/2です。
・Adviceを同一Joinpointにスタックしたい〜
public class Bootstrap {
public static void main(String[] args) {
// コンテナ準備
S2Container container = new S2ContainerImpl();
ComponentDef compDef = new ComponentDefImpl(SpeakerImpl.class);
container.register(compDef);
Pointcut pointcut = new PointcutImpl(new String[]{"say"});
AspectDef aspectDef1 =
new AspectDefImpl(new TraceAdvice(), pointcut);
AspectDef aspectDef2 =
new AspectDefImpl(new TestAdvice(), pointcut);
compDef.addAspectDef(aspectDef1);
compDef.addAspectDef(aspectDef2);
// クライアント実行
Speaker speaker = (Speaker)container.getComponent(Speaker.class);
speaker.say();
}
}
いまのAPIで同じPointcutにAdviceを複数登録しようとすると、上のコードに
なるかと思うのですが、クライアント実行しての結果ははじめに登録した
TraceAdvice が動いて結果を返します。二番目に登録した TestAdvice は動作
しません。実際にも、ログを出すAdvice仕込んだら他のAOPコンポーネント使
えないのは困るかと。。。
--
株式会社グルージェント
栗原 傑享(くりはら まさたか)
渋谷区渋谷3-7-6 第6矢木ビル4F
TEL:03-5469-8869 FAX:03-5469-8879
URL:http://www.gluegent.com/
--
Seasar-user メーリングリストの案内