LoginSignup
4
3

More than 3 years have passed since last update.

【Java】SpringBoot勉強してみた

Last updated at Posted at 2021-03-08

はじめに

こんにちは。
少し前にはなりますが、とある企業のセミナーに参加した際に、SpringBootというフレームワークを使っていると知り、気になったので勉強してみました。
復習がてらに、備忘録として記事に残しておこうと思います:sunny:

今回は概念的な内容になります。

Spring Frameworkってなんぞや

SpringBootを紹介する前に、SpringFrameworkについて説明しておきます:runner_tone1:

◆ SpringFrameworkについて

  • Javaの世界では老舗とも言えるフレームワーク
  • DI(依存性注入)を実現するためのもの
  • DIをベースに様々な機能を実装して「 統合フレームワーク 」に成長

◆ Spring Frameworkの「DI」とは?

  • Dependency Injection(依存性注入)
  • オブジェクト間の依存関係を、オブジェクト内のコードに記述せず、
    実行時に外部から呼び出す手法

DIについて.png

◆ 多数のフレームワークから構成

SpringFrameworkは多数のフレームワークの集合体です。中でも有名なものとして、SpringMVC、SpringRoo、SpringBootなどがあります。

  • SpringMVC:Model-View-Controllerアーキテクチャーによる開発

MVC.png

  • SpringRoo:Spring MVCを補完するライブラリとして登場
    • コードの自動生成機能ライブラリ
    • 簡単なコマンドを実行するだけで、アプリケーションの枠組みが自動的にできあがるらしい(Railsみたいなイメージ)
  • SpringBoot

◆ SpringBoot誕生

先ほど説明したSpringMVCやSpringRooはどちらも便利そうで良さげに思えますが、問題点もいくつかあります。SpringMVCは、多くのSpring系のライブラリを正確に組み合わせる必要があり、環境構築も大変。SpringRooもある程度は自動化できましたが、やっぱりまだまだ大変、、

そこで登場したのがSpringBootです!:dizzy:
SpringBootは、最良のWebアプリケーション開発を素早く構築するスターターキット的なライブラリです。Spring Boot = 「Spring MVCの完成形」と言えます :tada:

【SpringBootの特徴】

  • 専用のスターターライブラリを設定ファイルに記述するだけで、 一通りのライブラリの読み込み、環境構築が可能
  • データベースアクセスなどの機能をほとんど自動化

Spring Bootのメリット

Javaの世界でも「Railsライク」とも言われる、効率的で高速開発ができるフレームワークがたくさん出来てきました。 それでも、「 Spring Boot 」を選ぶ理由は何なのでしょうか?

ここではSpringBootのメリットを5つ紹介します:raised_hands_tone2:

① 面倒なXML設定ファイルの記述がない

従来のJava EE開発はXMLによる設定ファイルだらけで、入力が面倒であったり、エラーの特定が困難である等、問題も多々ありました。

SpringBootでは 以下のような事でXML設定ファイルの記述を少なくしています。

  • Auto-configuration: 各種設定を必要最低限の記述のみで自動設定
  • 不足する部分はJavaConfigを追加
  • アノテーションによる開発

② アノテーション(注釈)記述による コーディング量の削減

アノテーションとは、"@ Xxx" の形式でコンパイラや実行環境にJava の言語機能としては表現できない事や補足などを伝えるものです。
例:@ before(メソッド実行前に呼び出す)

アノテーションは大きく3つの種類に分けることが出来ます。

マーカーアノテーション:何らかの用途でマークする
単一アノテーション:データーを持つ事ができる
フルアノテーション:複数のデータを持つ事ができる

③ サーバー内蔵方式

一般的なものは、アプリケーションとは別にApache ,Tomcat等のサーバーを準備し、 開発したアプリを追加して動かします。
これに対して、SPringBootにはJavaサーバーが内蔵されており、 直接サーバーを起動して実行します。

④ DIをベースとする一貫した実装

DIをベースとしているため、スッキリしていて分かりやすいのもSpringBootの特徴です:writing_hand_tone2:

  • 数多くのライブラリがあっても、基本的な設計思想は一貫している
  • 新しいライブラリが追加されても覚え直す必要なし
  • テスト時のインスタンスの差し替え可能

⑤ AOP( アスペクト指向プログラミング )

AOPとは、プログラミングを別の視点、側面から考えていこうよ!っていうプログラミング手法です。

オブジェクト指向の時、オブジェクト単位に処理を上手く分解できない...どうしよう...
複数のオブジェクトで同じ操作が散在してしまう.....えらいこっちゃ...
こんな悩みを抱える事があります ( この状態を「横断的関心事」って言うらしいです)

そんな時はAOP!!
アスペクトというモジュールに分離します。AOPによって、オブジェクト指向ではカバーできない部分をカバーする事が出来ます :fist_tone2:

⑥ STS ( Spring Tool Suite)

一般的なフレームワーク「本体は提供するから、あとはそれぞれで自由に使ってくれ」 っていうスタンスですが、Spring Bootはフレームワーク本体に加えて専用開発ツール(STS)も提供しています。

【STSの特徴】

  • ベースは「 Eclipse 」で、Spring Framework利用のためのプラグインが追加されている
  • 必要な処理が自動化され、コードの作成のみに注力できる
  • ここまで環境整備を行っているフレームワークはSpring Framework以外にはほぼ無い(らしい)

:warning: Spring Bootは「 十分条件 」ではない

フレームワークが提供するのは「プレゼンテーション層」の部分です。MVCにおける、View(画面)、Controller(全体の制御)の部分のみを提供します。つまり、ただ「仕組みがある」というだけで、別の技術も必要になってくるのです...

例えば、データベース関連ではSpring Data JPAやSpring Data MongoDBが必要ですし、画面実装にはテンプレートエンジン( Thymeleaf )というモノも使われます。

おわりに

ここまで、SpringBootについて紹介してきました。まとめます :writing_hand_tone2:

  • SpringBootでは、主にSpring Frameworkのフレームワークを組み合わせて開発
  • 複雑な設定処理の記述が必要ない
  • SpringBootを使えば、従来よりも簡単に素早く Webアプリケーションを開発できる

最後まで読んでいただきありがとうございます :bow_tone1:
間違っている点などございましたら、ご指摘いただけると嬉しいです!

参考文献

今回は主に「Spring Boot2 プログラミング入門」を参考にまとめさせていただきました。初心者にも分かりやすく説明してくれているので、興味のある方は是非:bow_tone1:

4
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
3