taiPyのお悩み解決ブログ

日々の発見をまとめます!

Spring Framework 超入門, 4種類のDIのアノテーションを使用タイミングと意味について

はじめに

いま、Spring Framework 超入門という本を読んでいます。アマゾンへのリンクはこちら。Spring Framework 超入門

学んだことの備忘録としてブログにメモしておこうと思います。 今回書くことは、 「DIのアノテーション」 について書きます!

Springの勉強をしていると必ずDIという機能をマスターする必要があります。これがSpingの中心的な機能ですので。その時に、アノテーション(例:@Service)をつけるんですよね。私が学習をしていて結構困ったのがいつどんなアノテーションをつけたらいいのかっていうことに困っていたんですよ。今日はこのDI関連のアノテーションというのが、4種類ぐらいあるんですよね。じゃあそれぞれの種類の意味とかいつつけたらいいのとかそこら辺が結構あいまいでした。

今回、DIのアノテーションについて勉強したので説明していきます。 まずは、DIとアノテーションについての概要を説明してから、4種類それぞれのアノテーションの意味とタイミングを説明する流れで本記事は構成されています。

目次

DIとは?

DIとは英語でDependence Injectionと呼ばれ、日本語訳すると「依存性を注入する」ということです。これをすることでJavaのクラスとクラスを疎結合にすることが出来ます。たとえば、AクラスとBクラスがあったとして、AクラスはBクラスがないと生きていけない(恋愛っぽい)をなくすことが出来るんですよね。クラスとクラスを疎結合にすることが出来る。これがDI(Dependence Injection)のメリットです。

デメリットを上げるとすれば、まあ、慣れるまでは少しめんどくさいってことですね。

アノテーションとは?

アノテーションについての概要は次の通りです。

  • アノテーション=annotation=注釈
  • @hogehogeみたいなやつ
  • 外部のソフトウェアにやってほしいことです

import lombok.Data;

// ここ
@Data
public class Cake {
    private String Name;
    private Integer Number;
}

上の例の場合だと、@Dataを使っています。で、import lombok.Data;が外部のソフトウェアを表していて、lombok.Dataを使いますよー。それをインポートしてきますよーって言っています。これを書くことで、このCakeクラスにgetter, setter, equals(), hashCode(), toString()メソッドを自動で作成してくれます。(lombokが勝手にしてくれます。lombok様様です。)

4種類、DIのアノテーション概要とタイミング

DIとあとはアノテーションについて抑えられたところで、実際にDIのアノテーションについて説明していきます。DDのアノテーションは次の4種類があります。

  • @Component
  • @Controller
  • @Service
  • @Repository

それでそれぞれのアノテーションの意味は次のようになっています。

No アノテーション 意味
1 @Component 特定の役割を持たない。なんでも屋さん。
2 @Controller Webのリスクエストを処理します。例えば、GetやPost等を処理して、このページにデータがPostされたから、この処理していこーみたいな。
3 @Service ビジネスロジック。根幹。本質的なプログラムに付与される
4 @Repository データをやり取りするときに使用される。

とりあえず@Componentつけといて、MVCフレームワーク(Webアプリ開発でよく出てくるやつ)のコントローラーを作成したいときは@Controllerをつけて.

じゃあビジネスロジックとか本当に大切なところ、あんまり変わらないところには@Serviceつけといて、データベースとやり取りするところには@Repositoryをつけておくそんな感覚で大丈夫かと思います。

これらのアノテーションたちをつけておくことでコンピューターに、このクラスはこういう意味で使うよって伝えることができる。裏側でいろいろやってくれているので、便利だし、必要だからつけておきましょう!

参考文献