springboot

SpringBootのControllerとServiceの関係は?なぜ両方必要なのか?

投稿日:

 

あなた
SpringBootで開発する時コントローラークラスの他にサービスクラスを作る時が多いんだけどぶっちゃけコントローラクラスだけで良くない?ダメなの?
んー。よくはない!僕も両方が必要な理由がいまいちピンと来なかった。けど今は両者の役割がよくわかる。
てんし君
あなた
早く教えてよ
はっ!!ついつい語ってしまいました笑では今回はSpringBootのControllerクラスとServiceクラスの関係について説明していきまーす!
てんし君

 

こんな方におすすめ

  • RestControllerの役割について知りたい方
  • SpringBoot初学者

Controllerは監督でServiceは選手

SpringBootにおけるコントローラクラスとサービスクラス。両者の関係性はずばり「監督と選手」です。

Controllerは司令塔

どんなスポーツでも良い監督がいないチームは負けがちですし戦術も機能しません。

プログラムもそうです。

行動を取りまとめる司令塔であるControllerが存在することでより良いプログラムが完成するのです。

Serviceは選手

サッカーをイメージしてください。

選手はそれぞれ専門の役割を持っています。

例えばGK、FW、MFなどです。

SpringBootにおけるServiceクラスはサッカーにおける選手の存在に近いです。

この時のControllerはもちろん監督です。

何か問題があったりしたときは監督に報告しますし、監督からの指示があれば従いますよね。

Serviceの役割も選手と同じです。

SpringBootではControllerとServiceがいるがメリット

何となくControllerとServiceの関係性や必要性が理解できたでしょうか。

初学者にありがちな考え方として

「なるべく一つのクラスにいろんな処理をまとめよう」

というものがあります。

確かに見かけ上はシンプルに見えるかもしれませんが、実際の業務ではまずそんな構造のプログラムを組むことはないでしょう。

なぜなら、規模の大きいプログラムを組むときはなるべくシンプルな処理ごとに分けて作って行くからです。

そうするメリットとしてはプログラムの修正がしやすいという点があります。

もし複数の処理を一つのクラスにまとめてしまっていると修正が難しくなります。

こうしたことを考えるとSpringBootにおけるControllerとServiceの両方を使って処理を実装することは非常に便利だということがわかるでしょう。

 

てんし君
すごいですよね!自分でプロジェクトを作るときも「規模が大きくなっても修正しやすいか」「他人にも理解してもらいやすい構造になっているか」を意識すると実践的なものを作れると思います。

 

-springboot

Copyright© エンジニアてんし君ブログ , 2020 All Rights Reserved.