はじめに
いま、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
をつけておくそんな感覚で大丈夫かと思います。
これらのアノテーションたちをつけておくことでコンピューターに、このクラスはこういう意味で使うよって伝えることができる。裏側でいろいろやってくれているので、便利だし、必要だからつけておきましょう!