S2JDBCとかInterceptorなどはthread-safe?
Action用のインターセプター内でDB接続したかったので色々試していたら、Actionと同様にJdbcManagerをpublicフィールドで定義しておけば自動的にインジェクションされた!
Writing Some Code
そうなのかー。。このへんどうなんでしょう。確かに2.3のときはDIされなかった気がしますね。
それに、Interceptorに関しては、S2AOPのドキュメントで
Interceptorはアスペクトをクラスに組み込む際にインスタンス化されるため、singleton以外の場合は意図したとおりに動作しません。
このような場合は、InterceptorLifecycleAdapterをMethodInterceptorのinvoke()メソッドに適用します.
となっています。Actionのインスタンス属性がrequestだから、Interceptorのインスタンスもrequest単位で生成されるということでいいのかな。
それと、S2JDBCのJdbcManagerって、s2jdbc.diconを見る限りsingletonということでいいのでしょうか。JdbcManagerImplをちらっと覗いてみた感じでは、そのへんが考慮されているように見えます。
・・・といったスレッドセーフ関係あたりは、Seasarのドキュメントのどこにあるのかもしれないけど、ちょっと見つけづらいですね。