Spring(深化)-第1週

6670 ワード

Spring MVC応答について


スプリングMVC?

  • モデル-ビュー-コントローラ設計モード
  • サーバがHTMLを提供
  • 静的Webページ
  • Controller
  • クライアント要求のモデル処理
  • クライアントへのビューのダウングレード(静的Webページ、HTML)
  • ダイナミックWebページ
  • Controller
  • クライアント要求のモデル処理
  • Templateエンジンにビュー、モデルを転送
    1)View:動的HTMLファイル
    2)モデル:ビュー情報
  • Template engine
    1)モデルをビューに適用→動的Webページの生成
    例)ログインに成功した場合、「ログインしたユーザのid」をページに追加
    2)Templateエンジンタイプ:タイムスライス(Thymeleaf)、Groovy、FreeMarker、Jadeなど(スプリングはJSPを推奨しない)
  • クライアントへのビューダウングレード(ダイナミックWebページ、HTML)
  • コントローラとHTTP応答メッセージ
  • コントローラとHTTP要求メッセージ
  • ばねMVCの運動原理



    1. Client → DispatcherServlet
    -フロントエンドの要求(FrontControllerとも呼ばれる)
    2. DispatcherServlet → Controller
    -要求されたコントローラを見つけて転送し、APIを処理する
    -HandlerマッピングマッチングAPIパスとController関数
    -私が勝手に関数名を設定できる理由!!
    -コントローラに要求された情報を送信します(「モデル」)
    3. Controller → DispathcerServlet
    -コントローラがクライアントから受け取ったAPI要求を処理する
    -モデル情報とビュー情報をDispatcherServiceletに送信
    4. DispatcherServlet → Client
    -ビューにモデルを適用するには、ViewResolverを使用します.
    -ビューを応答としてクライアントに送信

    Annotation

  • @requestmapping("/hello/response"):クラスに宣言され、
  • に共通URLとして書き込まれます.
  • @GetMapping("/html/redirect")
    =>/hello/response/html/redirect
  • @RestController = @Controller + @ResponseBody
  • コントローラの役割について

  • HTTP requestは、応答処理のために毎回記述する重複コード
  • を省略することができる.
  • API名ごとにファイルを作成する必要はありません
  • APIごとにファイル
  • を作成する必要はありません.
  • は、通常、1つのContollerにすべてのAPI
  • を含まない
  • は、同様の性質を有するAPIをコントローラとして管理する
  • 関数の名前は任意に設定できます(ただし、クラスに重複関数の名前を付けることはできません)
  • @Controller
        public class UserController {
        	@GetMapping("/user/login")
        	public String login() {
        	    // ...
        	}
    
          @GetMapping("/user/logout")
          public String logout() {
              // ...
          }
    
        	@GetMapping("/user/signup")
        	public String signup() { 
        		// ... 
        	}
    
        	@PostMapping("/user/signup")
          public String registerUser(SignupRequestDto requestDto) {
        		// ... 
        	}
        }    
  • AllInOneControl問題
  • クラスにコードが多すぎます
  • コードを理解するのは難しい:コードの内容を理解するには、最初から最後まで読まなければならない
  • 現在の業界では、コードの追加または変更の要求があります.
  • 新商品登録時のクライアントへの応答値変更
  • 最低価格変更(Myprice)更新条件
  • DBテーブル名
  • を変更

    コントローラ、サービス、およびRepositoryロールの分離

  • Controller
  • クライアント要求
  • 要求の処理は、
  • をサービス専門に担当する.
  • 応答クライアント
  • Service
  • ユーザー要件の処理(「ビジネスロジック」)
  • 業界のサービスコードは
  • を膨張し続けている.
  • DBの情報が必要な場合、Repositoryに
  • を要求する.
  • Repository
  • DB管理(接続、切断、リソース管理)
  • DB CRUDタスクの処理
  • 依存注入の理解

  • 強結合->緩和結合
    オブジェクトごとにオブジェクトを作成するのは1回だけです!!
  • 生成されたオブジェクトはどこでも再利用可能!!
  • IoC(制御反転)
  • 必要なオブジェクトを
  • で直接インポートする.
  • を使用するオブジェクトがどのように作成されたかを知る必要はありません.
  • 「依存注入」または韓国語「依存注入」
  • スプリングIoC容器

  • スプリングフレームが必要なオブジェクトを作成および管理します.
  • ではありません.
  • 空(bean):スプリングによって管理されるオブジェクト
  • スプリングIoC容器:「空」を集めたバケツ
  • @Component
  • クラス宣言の上に
  • を設定
  • スプリングサーバが起動すると、スプリングIoCに「空」
  • が保存される.
  • スプリング「空」名:クラスの前の文字のみ小文字
  • に変更
  • @コンポーネント適用条件
  • @ComponentScanで設定したパッケージの場所とサブパッケージpackage@SpringBootApplicationデフォルト設定
  • @SpringBootApplicationデフォルト
  • スプリング「空」:@Autowired
  • メンバー変数宣言上@Autowired→Spring注入依存性
  • 「空」を使用する関数には、@Autowired→Spring DI
  • @Autowired適用条件:スプリングIoCコンテナによって管理されるクラス
  • にのみ適用
  • @Autowired省略条件:作成者が宣言した場合のみ省略可能
    =>Lombok上の@RequiredArgsConstructorは
  • を省略可能

    キーワードで商品を検索する


  • API


  • 商品検索API操作手順

  • 興味のある商品登録

  • API