[java][seasar] JdbcManager に Interceptor を織り込む

SAStruts で JdbcManager に Interceptor を織り込もうと画策。

まず、app.dicon にて

<component name="jdbcManager" class="org.seasar.extension.jdbc.JdbcManager">
    <aspect pointcut="toString">
        <component class="org.seasar.framework.aop.interceptors.TraceInterceptor" />
    </aspect>
</component>

そして、試しにこんなコードを。

public JdbcManager jdbcManager;

@Execute
public String update() {
    jdbcManager.toString();

    return "update.jsp";
}

しかし、これだと TraceInterceptor がちゃんと動いてくれなかった。

しばし試行錯誤で動かしてみるも、どうも Interceptor が織り込めない。暗黙的なコンポーネントには織り込めないのかと思ったけど、いや、そうじゃないでしょうと思って、気付いた。

s2jdbc.dicon に設定してやらないとダメでした。

<component name="jdbcManager" class="org.seasar.extension.jdbc.manager.JdbcManagerImpl">
    <property name="maxRows">0</property>
    <property name="fetchSize">0</property>
    <property name="queryTimeout">0</property>
    <property name="dialect">postgreDialect</property>
    <aspect pointcut="toString">
        <component class="org.seasar.framework.aop.interceptors.TraceInterceptor" />
    </aspect>		
</component>

したらば、ちゃんとログが出ましたよ!

DEBUG 2008-03-10 23:39:34,250 [http-8080-1] BEGIN org.seasar.extension.jdbc.manager.JdbcManagerImpl#toString()
DEBUG 2008-03-10 23:39:34,250 [http-8080-1] END org.seasar.extension.jdbc.manager.JdbcManagerImpl#toString() : org.seasar.extension.jdbc.manager.JdbcManagerImpl$$EnhancedByS2AOP$$ca2369@1f4bf33

s2jdbc.dicon の存在をすっかり忘れてました。一度設定したら、あとは見なくなっちゃうからなあ。いかん、いかん。