Spring Boot DB連携

Spring BootのWEB画面上でサービスクラスを利用してみた

これまではコントローラクラスに主要な処理を記載していたが、MVCモデルに従うと、C(コントローラ)とM(モデル)で明確に分割した方が望ましい。

MVCモデルについては、以下を参照のこと。
https://qiita.com/s_emoto/items/975cc38a3e0de462966a

そこで、今回は、以前作成したサンプルプログラムを修正し、M(モデル)の役割をもつサービスクラスに、主要な処理を移動してみたので、そのソースコードを共有する。

前提条件

下記サイトのソースコード実装が完了していること。

Spring BootのWEB画面上で、MyBatisによるOracle接続を実装してみた今回は、Oracle接続する処理をMyBatisにより実装してみたので、そのサンプルプログラムを共有する。MyBatisを利用すると、S...

完成した画面イメージ

下記サイトの「完成した画面イメージの共有」を参照のこと。

Spring BootのWEB画面上でCRUDを含むOracleアクセス処理を実装してみた(完成イメージ編)今回は、C(Create)・R(Read)・U(Update)・D(Delete)を一通り含むOracle接続処理をSpring Boo...

作成したサンプルプログラムの内容

作成したサンプルプログラムの構成は以下の通り。「前提条件」で記載したソースコードと異なるプログラムを赤枠で囲っている。
サンプルプログラムの構成

「DemoService.java」は以下の通りで、インタフェースを定義し、そこに主要なメソッドが記載されている。



「DemoServiceImpl.java」は以下の通りで、「@Service」アノテーションを付与しインスタンス化できるようにした上で、インタフェースに定義したメソッドの実装が記載されている。



また、「DemoController.java」は以下の通りで、インスタンス化するクラスを宣言する「@Autowired」を付与しているクラスは、「DemoServiceImpl.java」でなく「DemoService.java」となっている。「DemoService.java」のメソッドを呼び出すことで、「DemoServiceImpl.java」に定義した実装が呼び出される仕組みになっている。

その他のソースコード内容は、以下のサイトを参照のこと。
https://github.com/purin-it/java/tree/master/spring-boot-service/demo

また、同一インタフェースに複数の実装クラスがある場合については、以下を参照のこと。
https://qiita.com/gagagaga_dev/items/c16e5b6b3dff6df7e406

要点まとめ

  • MVCモデルに従うと、C(コントローラクラス)とM(モデル)の役割を明確に分けた方が望ましい。
  • インタフェースとその実装を用意した場合、呼び出す側で「@Autowired」を付与するクラスをインタフェースクラスにしそのメソッドを呼び出すことで、実装クラスの同名のメソッドが呼び出される仕組みになっている。