@SpringBootApplication
昔はXMLで多くの設定を書く必要があったが、この記述でそれらが自動的に行われるようになった
@Test
UnitTestの対象になる
@Controller
この表記をしておくと、必要な時に自動的にインスタンス化される
Dependency Injection(DI)という仕組みがあり、インスタンス化したオブジェクトをいつでも使えるように保管している(最後におまけで簡単な解説あり)
後述のComponentと同じ意味合いで、Controllerを付けた場合はComponentは付けない
#@ControllerAdvice
これを書き加えることで、Controllerというクラスを横断した処理を作ることができる
@Component
以下のAutowiredアノテーションと関連しており、DI対象のクラスになる。対象クラスになることでAutowiredが使えるようになる。
#@Autowired
DIとして実装するのに必要なアノテーション
インスタンスを生成したい変数の前にこのアノテーションを付けることで、Componentアノテーションがついたクラスの中から該当するものを探してくれ、そこでnewしたものを使いまわせる(シングルトン)
#@Configuration
設定を書くのに必要
このアノテーションを付けたクラスが自動的に設定を記述するクラスだと認識される
#@RequestMapping
@RequestMapping("/sample")という書き方をすると、「/sample」というURLにアクセスしたときに処理が行われる
めっちゃ丁寧に説明している記事を見つけたので、参考までにリンクを共有します
#@GetMapping
@GetMapping("/test")という書き方をすると、「/test」というURLにアクセスしたときにGETの場合メソッドの処理が行われる
#@PostMapping
@PostMapping("/test")という書き方をすると、「/test」というURLにアクセスしたときPOSTの場合メソッドの処理が行われる
#@ExceptionHandler
このアノテーションの後に()でエラー内容を書くことで、エラーが起きた時にこのアノテーションを付けたメソッドが呼ばれる。すべてのコントローラで書く際はControllerAdviceアノテーションを付けたクラスで対応できる。
#@Transactional
トランザクション処理として行われる
#バリデーション
##@NotNull
NotNull制約を付けることができる
##@NotBlank
フォームなどでブランク(空欄)のときにエラーが出せる
##@Size
この後に(min = 1, max = 20)などの形で入力のバリデーションを付けることができる
#おまけ:DI(Dependency Injection)
日本語訳すると依存性の注入。
密な結合になると単体テストがしづらくなるが、疎な結合にすることで他とつながるシステムでも機能ごとの単体テストをしやすくする。
具体的には、シングルトンの考え方であり、一度別の場所でインスタンス化したものを様々な場所で使いまわすといった考え方。