0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Springについて勉強したことまとめる#1 (Springってなんだ?)

Last updated at Posted at 2023-05-18

こんにちは!
私は23卒の新卒でITエンジニアをしているのですが、つい先日初めての案件にアサインされまして、それに伴ってjava springを使うことになったので、技術書を読みながら、学んだことをまとめようと思います!

※ この記事はSpringについて解説するものではなく、どちらかというと書籍を読むうえで必要になりそうな知識について調べてまとめた単語、技術集のようなものになる予定です。(もともとは本の内容について要約したような記事にする予定でしたが、読んでいるうちに、この本はその技術が必要になった時に、その部分を引いて活用する辞書タイプの本だと思ったので、引いて活用する際に躓かないように技術を蓄えるような記事にします)

筆者のプロフ

・23卒の新卒でスタートアップのITエンジニアとして就職しました。
・特定の言語や技術に依存した仕事ではなく、幅広くいろいろなことをやるため、様々な知識を身に着ける必要があり、今回のjava springもそのうちの一つです。
・就職以前は、専門学校でゲーム制作について学んでおり、C#,C++はある程度は理解しています。
オブジェクト指向に関しても、一通りの概念は理解しているつもりです。
javaに関しては、ここ3日間ほどで勉強系のサイトの教材を通して学びました。(めちゃくちゃC#に構文が似てると思いました。)

今回勉強する技術書

Spring 徹底入門
Spring FrameworkによるJavaアプリケーション開発

株式会社NTTデータ/著
出版社 : 翔泳社

この記事ではまず、本書のチャプター1にあたるSpringについての説明の部分について取り上げます。

Spring Frameworkとは

10年以上の歴史を持つjavaアプリケーション開発用のオープンソースフレームワークの1つ
開発当初から掲げられていた設計思想として、「古いインフラ環境でも、新しいインフラ環境でも、最新のプログラミング思想で設計できること」を持っているため、長年愛され続けてきた。
大きな特徴として、DIやMVC、AOPといったものがあるようですが、現状は理解できていないので、読み進めていくうちに理解しようと思う。

Springの各種プロジェクトについて

現在この記事で取り上げているのは、SpringFrameworkだが、実際にはSpringには10以上のプロジェクトがあり、それらが相互的に機能しあいエコシステムを形成している

Spring MVC

Webアプリケーション開発をするためのフレームワークであり、アーキテクチャにMVCパターンを採用している。
Spring MVCではさらにその中でも、アクションベースフレームワークという、アクション(ユーザーの要求)を中心に処理が構成されるものを採用している。(こっちのほうがアプリケーション開発では一般的)

MVCパターン

アプリケーションをモデルビューコントローラの3つに分割する設計パターン。
これらが疎結合であることで保守性、拡張性、テスト容易性を確保したソフトウェア開発を行える。

コンポーネント 役割
モデル 情報を保持するデータ構造を定義
ビュー ユーザーに見える部分の実装(HTMLなどで表示)
コントローラ 入力を受け取り、処理する部分の実装

Spring Security

Springベースのアプリケーションに対して認証認可などのセキュリティ要件を容易に実現できるフレームワーク
サードパーティー製の認証方法も利用可能

Spring Data

リレーショナルデータベースやNoSQL、Key-Valueなど、様々なデータストアへのデータアクセスを容易にするもの。(これはフレームワークではない?)
SpringData自体がさらにサブプロジェクトを持っている

Spring Data Commons
SpringDataの核となるインターフェース。このインターフェースでデータのアクセスを行うことができる。
Spring Data JPA
JPAを用いてデータアクセスを行うためのインターフェースの実装を最小限にする仕組み
そのほか複数のサブプロジェクト
他にも複数サブプロジェクトはあり、これらのサブプロジェクトにはアルファベット順で名前を付けている。
JPA

javaのオブジェクトとデータベースを紐づけることができるツール

Spring Batch

バッチアプリケーション向けの軽量フレームワーク。
大容量のデータ処理に必要な共通機能を提供している。

Spring Integration

EIPという、システム間を連携させるアーキテクチャパターンに基づく開発をサポートするフレームワーク。

EIP

Enterprise Integration Patterns
大規模開発における、インテグレーション(異なるシステム、コンポーネント、ソフトウェア間の相互接続や統合)をサポートする設計原則の集合

Spring Cloud

分散環境でCloud Nativeなアプリケーション開発をするためのフレームワークおよびツール群
多数のサブプロジェクトから構成される

Spring Cloud Config
プロパティなどの設定情報をGitなどの外部環境で集中管理し、配布する仕組みを提供
Spring Cloud Bus
分散環境のノード間を軽量のメッセージングでつなぐ仕組みを提供
Spring Cloud Connectors
クラウド環境への接続の仕組みを提供
Spring Cloud Netflix
Netflixが提供するオープンソースソフトウェアを使う仕組みを提供

Spring Tool Suite

Springアプリケーション開発をするために最適化されたEclipseベースのIDE。
基本的に必要になるツールはすべて内包している。

Spring IO Platform

Springベースのアプリケーションを開発、実行する際に必要なSpringのサードパーティー製含む各種ライブラリのバージョン決定をし。依存関係を解決するためのSpringサブプロジェクト。
さらにはバージョン管理デプロイの簡易化もしてくれる必需品。

Spring Boot

最小限の設定でプロダクションレベルのSpringアプリケーションを容易に開発するためのプロジェクト。
敷居が高くなっていたJavaアプリケーションの開発のハードルを大きく下げた。

あとがき

以上がSpring Frameworkに関する予備知識といったところでしょうか。
一応本を読みながらかみ砕いて書いてみたのですが、いかんせん知識がないので、本からそのまま引用する形になってしまったところがあって、反省です。
一通り勉強し終わったら、自分の言葉だけで再度書き直してみたいと思っています!

0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?