2
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【WIP】Springのアノテーションについて

Last updated at Posted at 2020-11-07

目的

springアノテーションの中を調べて中でどんな処理が走っているかを調べる

そもそもアノテーションとは?

この説明がわかりやすかった

アノテーションとは、「注釈」という意味です。Javadocコメントは開発者に対してプログラムがどういうものかを説明するために使いましたが、これと同様に、コンパイラや実行環境に対してプログラムがどういうものかを伝えたいことがあります。

後述する具体的な例を見れば分かりますが、Javaではアノテーションをプログラムに記述することにより、コンパイラで出力される警告メッセージを抑制したり、実行環境によってプログラムの動作を変更したりできます。

実行時の利用についてはこちらを参考にさせていただきました。
https://www.qoosky.io/techs/390aad36f8

個人的な考え

前提としてspringおけるアノテーションは非常に便利。

今までのJavaでは書かないといけなかったコードを
アノテーションをつけるだけで肩代わりしてくれるので非常に実装が楽

メリット

  • コード量の減少
  • 可読性の向上

デメリット

  • そもそものJavaについて(基本的なsetter,getter)知らないと何故アノテーションが必要なのか分からない
  • Javaの書き方について知ってないどのアノテーションを使えばいいか判断がつかない

調べ方

spring-projects/spring-frameworkを読みながらアノテーションの中身を調べていく

@RequestMapping

RequestMapping.java

役割

リクエストをコントローラのメソッドに繋ぐ(マッピング)宣言をする

ウェブリクエストをリクエスト処理クラスのメソッドにマッピングするためのアノテーション

他、解説

それ自体に@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 を継承しており、ソースコードレベルでの差異はないからである。

それぞれのアノテーションのソース

参考資料(いつもありがとうございます)

いまさらJavaのアノテーションを復習する

Javaアノテーションとは? その一覧と仕組み、自作の方法

【Spring】@Autowired と @Component を使用した DI の基本

Spring 関連記事へのリンク集←超重要!!!!

2
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?