かずきのBlog@hatena

日本マイクロソフトに勤めています。XAML + C#の組み合わせをメインに、たまにASP.NETやJavaなどの.NET系以外のことも書いています。掲載内容は個人の見解であり、所属する企業を代表するものではありません。

AOPもしてみよう

AOPも自動登録してみよう。

さっき作ったHello worldにログを仕込んでみる。
Log4jを使うのでlog4j.propertiesを用意する。
内容はWebから適当に拾ってきたものをコピペして書いた

### direct log messages to stdout ###
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d %5p %c{1} - %m%n

log4j.rootLogger=debug, stdout

次にapp.diconにアスペクトの自動登録の記述を付け足す。

<!-- componentsタグのすぐ後ろに -->
<include path="aop.dicon" />

<!-- ComponentAutoRegisterの後ろに -->
<component class="org.seasar.framework.container.autoregister.AspectAutoRegister" >
	<property name="interceptor">
		aop.traceInterceptor
	</property>
	<initMethod name="addClassPattern" >
		<arg>"org.sample.s2"</arg>
		<arg>".*Impl"</arg>
	</initMethod>
</component>

こんな具合。

おもむろに実行!

2006-11-12 15:30:48,890 DEBUG TraceInterceptor - BEGIN org.sample.s2.component.impl.GreeterImpl#greet()
2006-11-12 15:30:48,890 DEBUG TraceInterceptor - BEGIN org.sample.s2.component.impl.MessengerImpl#getMessage()
2006-11-12 15:30:48,890 DEBUG TraceInterceptor - END org.sample.s2.component.impl.MessengerImpl#getMessage() : Hello world
Hello world
2006-11-12 15:30:48,890 DEBUG TraceInterceptor - END org.sample.s2.component.impl.GreeterImpl#greet() : null

イイネ!