かずきのBlog@hatena

日本マイクロソフトに勤めています。このブログは個人ブログなので、ここに書いている内容は個人的な意見で会社の公式見解ではない点にご注意ください。好きなものは XAML と C# 。苦手なものは型の無い言語です。

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

イイネ!