annotation : 注釈,注記
を意味した英単語です。
Springではアノテーションが様々な役割を果たしています。
なので今回アノテーションについて調べてみました!
1. Springにおけるアノテーションとは
@Controller
@GetMapping("/")
@~~~
このような形で記述します。
特定のクラスやメソッドに対してフレームワークの機能や設定を指定することができます。
Springではこのアノテーションを付けることで「え!そんなところまで補完してくれるの!?」と大きい声を出すほど色々やってくれます。
2. 実際に使っているアノテーションを紹介
例を挙げるとキリがないので現状開発で使っている主なアノテーションを挙げます。
@Autowired
@Autowired: このアノテーションは、DI(Dependency Injection)を実現するために使用されます。Springコンテナは、@Autowiredアノテーションが付いたフィールドやメソッドのパラメータに対して、適切なBean(コンポーネント)を自動的に注入します。
ぶっちゃけまだDIがよくわかってないんですよね。。。
今後の課題ですね。
@Controller
@Controller: このアノテーションは、Spring MVCフレームワークにおいて、HTTPリクエストを処理するコントローラークラスを示します。
これは大発明ですよ!!
このアノテーションを付けるだけでコントローラーであることが一発で分かるし、スクラッチで作成するとめんどくさい部分を解決してくれます。
大好き。
@RestController
@RestController: @Controllerと同様にHTTPリクエストを処理するクラスを示しますが、@RestControllerはJSONやXMLなどのデータをHTTPレスポンスとして返す場合に利用されます。
実はまだ使った時ありません。
しかし説明文を読むだけでまた良さが伝わってきます。
現状AjaxやSPAでの開発をしていないので使ってないですが。いつかお世話になる未来が見えます。
@GetMapping()
@PostMapping()
@GetMapping / @PostMapping: これらのアノテーションは、それぞれGETリクエストやPOSTリクエストを処理するメソッドを指定します。
本当に一番使っています。
例えば↓のように実装すると、「lp」にアクセスするとroot関数が実行されます。
デバックすると時などURLから、実行した関数をすぐ発見することができます。
Springって便利やね。
@GetMapping("/lp")
public String root() {
}
@Data
@Data: Lombokプロジェクトのアノテーションで、クラスに通常必要なメソッド(getter、setter、toString、equals、hashCodeなど)を自動的に生成します。
この子にもほんとにお世話になってます。
この子のおかげでわざわざgetter,setter書かなくて済むんですから。
書かなくてもいいと同時にコードの量が少なくなるので見やすくなります。
@NoArgsConstructor
@AllArgsConstructor
@NoArgsConstructor / @AllArgsConstructor: Lombokのアノテーションで、引数なしのデフォルトコンストラクタや、全てのフィールドを引数に持つコンストラクタを自動的に生成します。
この子もねー
日々感謝しています。
上記の@Dataと同じように便利なコンストラクタを自動生成してくれます。
3.終わりに
アノテーションって意味が分かっていないとまともにコードを読めないと思います。
これからもいろんなアノテーションとの出会いがあると思うのでこの都度調べてに付けたいですね。
とあるサイトを見てみると40種類はあるそうです。自作もできるそうなのでもしかすると相当数ありそうですね。
4.予告
次の投稿は2024年3月1日の予定です!
こんどこそCORSについて!