かずきのBlog@hatena

すきな言語は C# + XAML の組み合わせ。Azure Functions も好き。最近は Go 言語勉強中。日本マイクロソフトで働いていますが、ここに書いていることは個人的なメモなので会社の公式見解ではありません。

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

イイネ!