📚

SpringBootのアプリケーションでJdbcTemplateを実行時に作成して使用する

に公開

poolingでDBに接続しにいくが接続情報が毎回変わるみたいな処理を実装する際にJdbcTemplateを利用するのにハマったので備忘録です

手順

exclude = { DataSourceAutoConfiguration.class }を設定することでSpringBootのDIで自動的にdataSourceを作成しないようにする必要がある。これをすることでアプリ起動時にDIを行おうとしてapplicaiton.ymlに接続情報がないからアプリ起動が失敗することを回避できる

コードは以下のようなものでOK

DriverManagerDataSource dataSource = new DriverManagerDataSource();
dataSource.setUrl(url);
dataSource.setUsername(username);
dataSource.setPassword(password);
dataSource.setDriverClassName("com.mysql.jdbc.Driver");
new JdbcTemplate(dataSource);

備考

大体のユースケースはこちらの方の記事に当てはまるのかなーと思うのでこの記事よりも動的に変えたい場合は今回の方法があるよ〜くらいの温度感です
[Spring Boot] 動的データソース変更

Discussion