インターセプター内でもJdbcManagerがインジェクションされる
Action用のインターセプター内でDB接続したかったので色々試していたら、Actionと同様にJdbcManagerをpublicフィールドで定義しておけば自動的にインジェクションされた!
public class HogeInterceptor extends AbstractInterceptor { public JdbcManager jdbcManager; public Object invoke(final MethodInvocation invocation) throws Throwable { // ここでjdbcManagerを使ってDB接続できる return invocation.proceed(); } }
最初、SingletonS2Container.getComponent(JdbcManager.class)で取得しようとしたらExceptionが発生したので、なんとなくActionのようにpublicフィールドにセットしてみたら、ちゃんと使えました。
SAStrutsのマニュアルには特に書いていないようだけど、これはSmartDeployの為せるワザなのかな?
Seasar2.4は初めてなので、こっちのマニュアルももっと読まないと、ですね。