autoBinding暗躍(トランザクションやコネクションプーリングの設定にて)

Seasar2.0.6ダウロードしてみた、といっても新しい機能を使ったわけではないのだけど。いや使ったのことになるのか、意識してないけどAOP使ったから。とりあえずトランザクションの自動制御コネクションプーリングのexampleを動かしてみた。

examples.dbcpやexamples.txパッケージを見る限り非常にシンプルなクラスやインターフェースしかないのだけど、実は設定ファイルを見てしばらく戸惑ってしまった…。すっかり忘れていたautoBindingの機能。seasar-tutorialのS09:CDオートチェンジャーで覚えた(つもりなの)のに。ひがさんにコメントもらったのに。

なるほど、autoBindingはこうやって使いまくるのか。j2ee-config.xmlのなかでどうやってautoBindingされるのかメモしておこう。インタフェース[実装クラス]という関係で書く。

  • MethodInterceptor[RequiredInterceptor]にTransactionManager[TransactionManagerImpl]をBindingする。
  • MethodInterceptor[RequiresNewInterceptor]にTransactionManager[TransactionManagerImpl]をBindingする。
  • MethodInterceptor[MandatoryInterceptor]にTransactionManager[TransactionManagerImpl]をBindingする。
  • ConnectionPool[ConnectionPoolImpl]にXADataSource[XADataSourceImpl]とTransactionManager[TransactionManagerImpl]をBindingする。
  • DataSource[DataSourceImpl]にConnectionPool[ConnectionPoolImpl]をBindingする。

examples.dbcpパッケージの例ではDataSourceはEmployeeDaoの実装クラスにBindingされ、さらにEmployeeDaoはEmployeeServiceの実装クラスにBindingされる。