はじめに
私は研修の中でSpringBootを使用しておりましたが、現在オリジナルアプリ作成の中で、SpringBootを使用していますが、研修の中で理解が曖昧だった点や今回気づいた点を今後、自分自身への備忘録も兼ねてあげていこうと思います。
間違った解釈をしている箇所などありましたらコメント等でご指摘いただければと思います。
各アノテーションについて
@Autowired
このアノテーションをつけることで、都度newでインスタンスを生成する必要がなくなる。
すべてのクラスのインスタンスの生成に使えるわけではなく、使われる側で@Component/@Controller/@Service/@Repositoryといったアノテーションが付与されていることで、newせずにインスタンスの生成が可能。
@Componentなどのアノテーションがついていないクラスを@Autowiredで呼び出してもNullPointerExceptionが発生する。
Sample sample;
//@Autowiredがないと↓
Sample sample = new Sample();
@PostMappingと@GetMappingの違い
1.使用するメソッドの違い:
・@GetMappingはGETメソッドに対してマッピングする。
・@PostMappingはPOSTメソッドに対してマッピングする。
2.リクエストパラメータの扱いの違い:
・@GetMappingでは、リクエストパラメータをURLのクエリパラメータとして受け取る(例:/example?param=value)。
・@PostMappingでは、リクエストパラメータをリクエストボディ内に含めて送信する。
3.リクエストデータの安全性の違い:
・@GetMappingは、リクエストパラメータがURLに含まれるため、情報がURLに表示される。
・@PostMappingは、リクエストボディ内にデータを含めるため、情報がURLに直接表示されず、より安全なデータ送信が可能。
@RequestParam
個々のリクエストパラメータを直接受け取る。
コントローラメソッドの引数に付けることで、HTTPリクエストのクエリパラメータやフォームパラメータを受け取ることができる。
@RequestParamアノテーションには、いくつかのオプションな属性が存在する。
・required: パラメータが必須かどうかを指定する。デフォルトはtrueですが、falseに設定すると必須ではなくなる。
・defaultValue: パラメータのデフォルト値を指定する。パラメータが指定されていない場合に使用される。
@ModelAttribute
オブジェクトとしてリクエストパラメータを受け取る。
@ModelAttributeアノテーションを使用してオブジェクトを受け取る。リクエストパラメータの名前とオブジェクトのフィールド名が一致していれば、自動的にバインディングされる。
@ModelAttributeアノテーションには、いくつかのオプションな属性がある。
・required: パラメータが必須かどうかを指定する。デフォルトはtrueですが、falseに設定すると必須ではなくなる。
・binding: オブジェクトがバインディングされるかどうかを指定する。デフォルトはtrueですが、falseに設定するとバインディングされなくなる。
参考サイト