Azure DB連携

Spring BootのDBアクセス処理を手動で定義しMyBatisを利用してみた

Spring Bootフレームワークを利用したアプリケーションでMyBatisを利用する際、DBにアクセスするDataSource等のBean定義を自動的に行うことができるが、この機能を利用せず、手動でDBアクセス処理を定義しMyBatisを利用することもできる。

今回は、手動でDBアクセス処理を定義しMyBatisを利用してみたので、共有する。

前提条件

下記記事の実装が完了していること。

Always Encryptedで暗号化されたカラムを更新してみたJDBC接続文字列に「columnEncryptionSetting=Enabled」を追加し、Azure Key Vault に対する...

作成したサンプルプログラム(Azure Functions側)の内容

作成したサンプルプログラム(Azure Functions側)の構成は以下の通り。なお、App Services側のソースコードは修正していない。
サンプルプログラムの構成
なお、上記の赤枠は、前提条件のプログラムから追加・変更したプログラムである。

<2021年4月13日 追記>
spring-cloud-function-dependenciesのバージョンは、2021年3月16日にリリースしたバージョン3.1.2を利用すると、1つのAzure Functions内に複数のファンクションを含む場合の不具合が解消できている。


その場合、Handlerクラスの継承するクラスを「AzureSpringBootRequestHandler」クラスから「FunctionInvoker」クラスに変更する。


spring-cloud-function-dependenciesの3.1.2を利用した実装サンプルは、以下の記事を参照のこと。

spring-cloud-function-dependenciesのバージョンを最新(3.1.2)にしてみたこれまでこのブログで取り上げてきたAzure Functionsのサンプルプログラムでは、spring-cloud-function-d...

DB接続定義は、以下のXMLで定義している。

また、application.propertiesのDB接続設定は不要になるため、削除している。

さらに、DB接続定義(mybatis-config.xml)を読み込み、SqlSessionファクトリを生成し返却する処理を、以下のユーティリティクラスで定義している。



また、Mapperインタフェースはクラスに変更し、@Repositoryアノテーションを付与し、各メソッド内でDBセッションの接続/切断する処理を追加している。

さらに、Azure Functionsのメインクラスは以下の通りで、@EnableAutoConfigurationアノテーションを付与し、Spring Bootのデータソース自動設定機能を無効にしている。

その他のソースコード内容は、以下のサイトを参照のこと。
https://github.com/purin-it/azure/tree/master/always-encrypted-db-manual/demoAzureFunc

サンプルプログラムの実行結果

サンプルプログラムの実行結果は、以下の記事の「サンプルプログラムの実行結果」と同じになる。

Always Encryptedで暗号化されたカラムを更新してみたJDBC接続文字列に「columnEncryptionSetting=Enabled」を追加し、Azure Key Vault に対する...

要点まとめ

  • Spring Bootフレームワークを利用したアプリケーションでMyBatisを利用する際、Spring Bootのデータソース自動設定機能を無効にして、手動でDBアクセス処理を定義しMyBatisを利用することもできる。