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される。