Spring 基礎

Spring Boot DIフレームワークであるSpring Frameworkをベースとしたアプリケーションを開発するためのフレームワーク

 

AOP(Aspect Oriented Programming, アスペクト指向プログラミング)

Spring Tool Suite(STS

オープンソースの開発環境である「Eclipse」や「Visual Studio Code」にインストールする機能拡張プログラムとして提供される専用開発ツール。

 

DI(Dependents Injection, 依存性注入) 「依存性の注入」の「注入」は、「インスタンスの代入」。それぞれのクラスでnewする必要が無くなる。newしなければならない依存性を抑える。

DIコンテナ 実行時、アプリケーション内をスキャンして必要なBeanオブジェクトがまとめて保管される。@Autowiredでフィールドにインスタンスを割り付ける。

↓包含関係

アプリケーション(DIコンテナ(Bean, Controller, Repository, Service, Component, Configuration))

 

Bean Javaで書かれた再利用可能なクラスのこと(JavaBeansとよく耳にする)

@SpringBootApplication アプリケーションのBean

@Controller コントローラーBean

@RestController RestコントローラーBean

これらは具体的な役割が設定されているので自分で@Autowiredはせず、クラスを書いてアノテーションをつければSpringのプログラムによって勝手に利用される。

アノテーション(@) 「注釈」という意味です。Javadocコメントは開発者に対してプログラムがどういうものかを説明するために使いましたが、これと同様に、コンパイラや実行環境に対してプログラムがどういうものかを伝えたいことがあります。Javaではアノテーションをプログラムに記述することにより、コンパイラで出力される警告メッセージを抑制したり、実行環境によってプログラムの動作を変更したりできます。どのアノテーションインスタンスをBeanとしてDIコンテナに登録するという働きは同じ。

 

@Bean 基本のBeanアノテーション。メソッドにつける。

@Component 再利用可能なコンポーネントアノテーション

@Service サービスとしていつでも呼び出せるクラスのアノテーション

@Repository データベースアクセスのためのアノテーション

これらのクラスとメソッドはインスタンスをDIコンテナに保管し自分で@Autowiredによってフィールドなどに割り当てて利用する。

 

Bean関係アノテーションに含まれるもの

@Bean | @Target, @Retention, @Document

@Component | @Target, @Retention, @Doument, @indexed

@Service | @Component, @Target, @Retention, @Documented

 

@Target アノテーションが実装可能である

@Retention アノテーションの保持範囲を示す

@Documented 付加した情報をドキュメントに反映する

@Indexed インデックスを付加する

Serviceの役割

サービスは、ビジネスロジックやアプリケーションの振る舞いを抽象化し
モデルやコントローラーから分離するためのコンポーネントです。
サービスは、データの取得、加工、バリデーション、外部サービスとの連携など、ビジネスロジックの具体的な処理を担当します。
これにより、コントローラーやモデルが煩雑になるのを防ぎ、コードの再利用性や保守性を向上させます。

Repositoryの役割

リポジトリは、データの永続化やデータソースとのやり取りを抽象化するためのコンポーネントです。
リポジトリは、データの取得、保存、更新、削除などの操作を提供し、データベースや外部データソースとの通信を隠蔽します。
これにより、モデルやサービスからデータアクセスの詳細を分離し、データアクセスの切り替えやテスト容易性の向上を実現します。

ServiceとRepositoryの導入は、MVCアーキテクチャパターンをより柔軟にし
ビジネスロジックとデータアクセスの責任を適切に分離する。