Seasar2 S2AOP デフォルトで用意されているInterceptor使用例

traceInterceptor

java.util.Date() に対してtraceInterceptorを設定した例

app.docon

<?xml version="1.0" encoding="UTF-8"? >
<!DOCTYPE components PUBLIC "-//SEASAR//DTD S2Container 2.4//EN"
"http://www.seasar.org/dtd/components24.dtd">
<components>
    <include path="aop.dicon" />
    <component class="java.util.Date" instance="prototype">
        <aspect pointcut="getTime">aop.traceInterceptor</aspect>
    </component>
</components>

mainメソッド

public static void main(String[] args) {
    S2Container container = S2ContainerFactory.create("app.dicon");
    Date d = (Date)container.getComponent(Date.class);
    d.getTime();
    Date d2 = (Date)container.getComponent(Date.class);
    d2.getTime();
}

traceThrowsInterceptor

例外発生を補足するためのInterceptor

app.docon

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE components PUBLIC "-//SEASAR//DTD S2Container 2.4//EN"
"http://www.seasar.org/dtd/components24.dtd">
<components>
    <include path="aop.dicon" />
    <component class="sample.ThrowTest">
        <aspect pointcut="throwmethod">aop.traceThrowsInterceptor</aspect>
    </component>
</components>

例外発生テスト用クラス

package sample;
public class ThrowTest {
    public void throwmethod() throws Exception{
        if(true){
            throw new Exception("error test");
        }
    }
}


mainメソッド

S2Container container = S2ContainerFactory.create("app.dicon");
ThrowTest t = (ThrowTest)container.getComponent(ThrowTest.class);
t.throwmethod();

toStringInterceptor

オブジェクトのtoString処理を自動で行ってくれる
@ToStringアノテーションを指定することが可能

import org.seasar.framework.aop.annotation.ToString;

public class ToStringInterceptorTest {
    private String field1 = "field one";
    private String field2 = "field two";

    @ToString
    public String toString(){
        return null;
    }
}

mainメソッド

S2Container container = S2ContainerFactory.create("app.dicon");
ToStringInterceptorTest t =
  (ToStringInterceptorTest)container.getComponent(ToStringInterceptorTest.class);
System.out.println(t);

以下のように出力される

sample.ToStringInterceptorTest@224c47db[field1="field one",field2="field two"]