のような調子であらゆるDBコネクションプールライブラリに対応してゆくのもきつい気がするので、
@Bean
public javax.sql.DataSource dataSource() {
HikariConfig config = new HikariConfig();
config.setDriverClassName(props.getDriverClassName());
config.setJdbcUrl(props.getUrl());
config.setUsername(props.getUsername());
config.setPassword(props.getPassword());
// その他の細かい設定もろもろ
HikariDataSource ds = new HikariDataSource(config);
// springのトランザクション管理機構で包み込む。
// これをやらないと@Transactionalでのトランザクション管理がおかしくなる
return new TransactionAwareDataSourceProxy(ds);
}
こういうふうに明示的に TransactionAwareDataSourceProxy を使うようにマニュアル上で呼びかけるとかどうでしょう。
#もしできたらほんとうにこれで DBFlute1.1.6 + HikariCP + Spring でトランザクション管理がされるかどうか
#検証していただけると大っっ変助かったりするのですが^^;)
あるいは
if (dataSource instanceof TransactionAwareDataSourceProxy) {
// springに任せられるので何もしない
} else {
// DBFlute(が自動生成したDBInitializer.java)自身がそれをやってしまう!?
dataSource = new TransactionAwareDataSourceProxy(dataSource)
}
みたいなふうにした方が将来的にわたってあんしんできるような気がします。