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"]