サービス、コントローラ作成


[コントローラを作成]


要求に応じて適切な応答を送信する

@RequiredArgsConstructor

  • 現場注入の代わりに(@Autowired)使用する生成者注入!
  • 循環防止参照
  • テストコードの作成が容易
  • 対象変異防止(finalキーワード使用)
  • More: https://zorba91.tistory.com/238
  • @RequestBody

  • クライアントから送信されたJson形式のHTTP BodyコンテンツをJavaオブジェクトに変換
  • なぜメッセージ変換中にオブジェクトのデフォルト作成者によってオブジェクトが作成され、内部で反射値を使う→デフォルト作成者が必要で、Setterが不要なのか!
  • @PathVariable

  • URIパスの一部をパラメータとして使用
  • @RequestParam:Query Stringからの値取得用
  • @Valid

  • @RequestBody対象検証
  • 依存性implementation 'org.springframework.boot:spring-boot-starter-validation’
  • [サービスの作成]


    SaveTodo

  • 入力されたrequsetDtoを使用してTodo Entityを作成
  • ユーザーとツールの仲介エンティティUserTodo Entityの作成
  • UserTodoを作成済みTodoに接続
  • Todo Entityストレージ→UserTodoも自動ストレージ
  • [コントローラテスト]


    MockMVC

  • 要求実行と応答生成のためのサーブレットAPIエミュレーション
  • MockMvc注入:@SpringBootTest+@AutoConfigureMockMvc
  • mockMvc.perform(post("/api/todo")
                    .content(asJsonString(reqDto))
                    .contentType(MediaType.APPLICATION_JSON)
                    .accept(MediaType.APPLICATION_JSON))
    
            // then
                    .andExpect(status().isOk());
  • 「/api/todo」経路でpostリクエストを送信
  • Content-Type: Json
  • 想定応答状態OK(200)設定