JAVA Spring 패치

윤슬·2025년 9월 22일

동기 vs 비동기

프로그래밍에서 작업 처리하는 방식

  • 동기 : 여러 작업이 실행될 때 작업 간의 실행 순서를 제어, 하나의 스레드가 동시에 접근 차단
    • 순차적 처리, 느리다, 무결성 중시
    • 예) 계좌이체: 출금/입금
  • 비동기 : 여러 작업이 실행될 때 독립적으로 실행 순서, 하나의 스레드가 동시에 접근 허용
    • 동시 처리, 빠르다, 무결성 보장 안됨
    • 예) 채팅

fetch

  1. 정의 : JS에서 제공하는 내장 통신 함수

  2. 역할 : HTTP 요청을 보내고 응답을 비동기적으로 처리

  3. 사용법

    • 비동기 방법 : then 이용한 체인 형식, 실행 순서 보장 안됨
      () => {
          fetch(url, option)
              .then(response => response.json())
              .then(data => { })
              .catch(error => { })
      }
    • 동기 방법 : async/await 이용한 동기 형식, 권장, 실행 순서 보장됨
      async () => {
          try {
              const response = await fetch(url, option);
              const data = await response.json();
          } catch(error) {
              console.log(error);
          }
      }
  4. 옵션 설명

    • url : Spring 프로젝트 내 통신할 controller의 @XXXMapping에서 정의된 URL
      • 주로 GET/DELETE queryString : url?param1=${value1}&param2=${value2}
    • option :
      • GET/DELETE : { method: "GET" }
      • POST/PUT : { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify(data) }
    • then(응답객체 => 응답객체.json()) : 응답 객체를 JSON 타입으로 변환
      • 주의: 자바에서 보내오는 타입이 String이거나 값이 null이면 .json() 불가능
    • then(변환된 객체 => { 실행문 }) : 통신 응답 결과 처리
    • catch(에러객체 => { 실행문 }) : 통신 에러 발생 처리
profile
우상향그래프

0개의 댓글