目的
springアノテーションの中を調べて中でどんな処理が走っているかを調べる
そもそもアノテーションとは?
この説明がわかりやすかった
アノテーションとは、「注釈」という意味です。Javadocコメントは開発者に対してプログラムがどういうものかを説明するために使いましたが、これと同様に、コンパイラや実行環境に対してプログラムがどういうものかを伝えたいことがあります。
後述する具体的な例を見れば分かりますが、Javaではアノテーションをプログラムに記述することにより、コンパイラで出力される警告メッセージを抑制したり、実行環境によってプログラムの動作を変更したりできます。
実行時の利用についてはこちらを参考にさせていただきました。
https://www.qoosky.io/techs/390aad36f8
個人的な考え
前提としてspringおけるアノテーションは非常に便利。
今までのJavaでは書かないといけなかったコードを
アノテーションをつけるだけで肩代わりしてくれるので非常に実装が楽
メリット
- コード量の減少
- 可読性の向上
デメリット
- そもそものJavaについて(基本的なsetter,getter)知らないと何故アノテーションが必要なのか分からない
- Javaの書き方について知ってないどのアノテーションを使えばいいか判断がつかない
調べ方
spring-projects/spring-frameworkを読みながらアノテーションの中身を調べていく
@RequestMapping
役割
リクエストをコントローラのメソッドに繋ぐ(マッピング)宣言をする
ウェブリクエストをリクエスト処理クラスのメソッドにマッピングするためのアノテーション
他、解説
それ自体に@Controller
と@ResponseBody
が付けられている便利なアノテーション
@Autowired
役割
- インスタンスを自動で生成
//@Autowiredあり
@Autowired
private Book book
//@Autowiredなし
private Book book = new Book()
@Component
以下引用
インスタンスを Spring 管理下におくため、クラスに付けるアノテーション。
@Autowired は Spring 管理下のオブジェクトの中から、
適切なものを変数に自動でセットしてもらうため、
インスタンス変数に付けるアノテーションである。
SpringMVC や Spring Boot では、
慣習的に @Component の変わりに @Controller、@Service、@Repository を使用する。
慣習的にと言ったのは、これら3つのアノテーションは、すべて @Component を継承しており、ソースコードレベルでの差異はないからである。
それぞれのアノテーションのソース
参考資料(いつもありがとうございます)
【Spring】@Autowired と @Component を使用した DI の基本
Spring 関連記事へのリンク集←超重要!!!!