[TIL] 스프링 입문 TIL - 26/04/06

신여원·2026년 4월 7일

내일배움캠프

목록 보기
1/15

오늘 한 것

  • Spring 입문 수강

오늘 배운 것

Gradle이란

Gradle
build 자동화 시스템
build: 작성한 소스 코드를 실행 가능한 결과물로 만드는 과정

  • Gradle 통해 build 하게 되면, libs 폴더에 실행 가능한 .jar 파일이 만들어진 것을 확인할 수 있다.

build.gradle
Gradle 기반의 build 스크립트

  • 소스코드 빌드나 라이브러리 의존성을 쉽게 관리 가능
  • Groovy 언어로 작성할 예정 (Groovy나 Kotlin으로 작성 가능)
  • dependencies에 필요한 라이브러리를 작성한다.
    -> Gradle이 해당 라이브러리들을 Maven Repository라는 외부 저장소에서 다운로드 해온다.
  • 외부 라이브러리 폴더에서 Gradle이 가져온 라이브러리들을 확인할 수 있다.

서버란

네트워크
여러 컴퓨터와 장비가 서로 연결돼 정보를 주고 받을 수 있게 도와주는 기술

  • 서로 정보를 주고 받기 위해서 IP 주소, 서브넷 마스크, 게이트웨이 등의 정보를 설정하고, 네트워크 프로토콜을 이용해 통신을 하게됨

  • 사용자는 브라우저를 이용해 서버에 정보를 요청하고 응답 받음

IP 주소
사용자의 요청이 해당 서버에 정확하게 도달할 수 있게 제공되는 정보

  • 네트워크망에서 컴퓨터를 식별하기 위한 위치 주소
    ex) 택배: 주소(IP) = 192.168.., 받는 사람(포트) = 8080 (주소 속 많은 사람들 중 받는 사람 1명 = 포트)

웹 서버
인터넷 통해 HTTP를 이용하여 웹상의 클라이언트의 요청을 응답해주는 통신을 하는 일종의 컴퓨터

  • 브라우저에 URL을 입력하여 어떠한 페이지를 요청했을 때, HTTP의 요청을 받아들여 HTML 문서와 같은 정적인 콘텐츠를 사용자에게 전달해주는 역할을 함

API (application programming interface)
다른 소프트웨어 시스템과 통신하기 위해 따라야 하는 규칙을 정의

  • 서로 다른 애플리케이션이 약속한 방식의 API 요청을 수행하면 정해진 결과물을 반환함
    interface: 서로 다른 두 개의 시스템, 장치 사이에서 정보나 신호를 주고 받는 경우 접점이나 경계면

RESTful API (Representational State Transfer(REST))
API 작동 방식에 대한 조건을 부과하는 소프트웨어 아키텍처

  • REST 아키텍처 스타일을 따르는 API
    REST: 복잡한 네트워크에서 통신을 관리하기 위한 지침
  • 쉬운 말로, 서버의 api가 적절하게 http를 준수하며 잘 설계되어있으면 RESTful 하게 설계되어있다고 함

  • 해당 API에 적절하게 위 사진과 같은 HTTP 메서드를 사용했다면, RESTful 하게 설계했다고 볼 수 있다.

  • Web Server의 2가지 역할
    1. 정적인 콘텐츠, 이미 완성돼있는 HTML과 같은 문서를 브라우저로 전달함
    2. 브라저로부터 '로그인하여 MyPage를 요청'과 같은 동적인 요청이 들어왔을 때, 웹 서버 자체적으로는 처리하기 어렵게 때문에 해당 요청을 WAS에 전달

    WAS (Wep Application Server) ex) Apache, Nginx

  • 웹 서버와 똑같이 HTTP 기반으로 동작

  • WAS를 사용하면 다양한 로직을 수행하는 프로그램을 동작시킬 수 있음 ex) Tomcat, JBoss

Apache Tomcat
Apache와 Tomcat이 합쳐진 형태로 정적인 데이터 처리와 동적인 데이터 처리를 효율적으로 해줄 수 있음
Tomcat
동적인 처리를 할 수 있는 웹 서버를 만들기 위한 웹 컨테이너

Spring 프레임워크
AOP, IoC/DI 등과 같은 핵심 기능을 가짐

  • 하지만, 핵심 기능 사용 위해서 아주 많은 xml 설정들이 필요함
    -> 불편함 개선 위해 SpringBoot 등장
    SpringBoot
    기존의 xml 설정 대신, Java의 어노테이션 기반 설정 사용
    • 외부 라이브러리와 프레임워크 간 각각의 버전들의 호환성을 직접 확인할 필요가 없어짐
    • 내장 Apache Tomcat
      • starter-web dependency를 설정하면 자동으로 내장형 Apache Tomcat을 제공해줌

Postman
API 개발을 빠르고 쉽게 구현할 수 있도록 도와주는 소프트웨어 플랫폼

  • API 즉, 약속에 맞춰 HTTP 요청을 서버에 보내고 응답을 확인하는 작업을 간편하게 할 수 있도록 도와줌
새 컨트롤러 생성 후 새 컨트롤러 생성 후어플리케이션 실행(main) 어플리케이션 실행(main)Postman 통해 확인 가능 Postman 통해 확인 가능내장 Tomcat은 자동으로 8080 포트로 서버가 실행됨 내장 Tomcat은 자동으로 8080 포트로 서버가 실행됨

HTTP란

HTTP (HyperText Transfer Protocol)
데이터를 주고 받는 양식을 정의한 "통신 규약" 중 하나
통신 규약: 컴퓨터끼리 데이터를 주고 받을 때 정해둔 약속

  • HTTP에서는 언제나 Request, Response 라는 개념이 존재한다.
  1. 브라우저는 서버에게 자신이 원하는 페이지(URL 등의 정보)를 요구(Request)
  2. 서버는 브라우저가 원하는 페이지가 있는지 확인하고, 있다면 해당 페이지에 대한 데이터를 실어 응답(Response) / 없다면 없는 페이지에 대한 데이터 반환
  3. 브라우저는 서버에게 전달 받은 데이터를 기반으로 브라우저에 그려줌
  • 개발자 도구 -> 네트워크 탭 -> Header 탭
    General, Request Header, Response Header

HTTP 상태 코드(Status Code)
상태 코드를 통해서 브라우저와 서버간의 요청, 응답 과정에서 발생할 수 있는 상황들을 표현할 수 있음

  • General에서 확인 가능
  • 첫 번째 자리 숫자는 상태 코드의 분류를 나타내는 용도로 사용됨
    1. 1xx (Informational)
    2. 2xx (Successful)
    3. 3xx (Redirection)
    4. 4xx (Client Error)
    5. 5xx (Server Error)
  • 나머지 두 자리는 세부적인 정보를 나타냄
  • 개발자 도구 -> 네트워크 탭 -> Response 탭
    • 서버에서 브라우저로 반환해준 웹 페이지를 그려주기 위한 데이터
      -> HTML 형태, 사람이 이해할 수 있도록 그려짐

HTTP의 구성요소

  • Method (호출/요청 방식)
    • GET: 어떤 리소스를 얻을 때 사용
    • POST: 웹 서버에 데이터를 게시할 때 사용하는 게 일반적
    • 그외 DELETE 등의 여러 요청 방식 존재
  • Header (추가 데이터, 메타 데이터)
    • 의사 표현을 위한 데이터를 모두 Header 필드에 넣고 주고 받음
      - 브라우저가 어떤 페이지를 원하는지, 요청 받은 페이지를 찾았는지, 요청 받은 데이터를 성공적으로 찾았는지, 어떤 형식으로 데이터를 보낼지
  • Payload (데이터, 실제 데이터)
    • GET method를 제외하곤 서버와 클라이언트(브라우저)가 응답과 요청을 할 때, 모두 Payload를 보낼 수 있음

학습하며 겪었던 문제점 & 에러

  • 문제 & 에러에 대한 정의
    별거 아니지만, 실습하면서 만든 폴더 안에 Git 저장소를 만들었는데 IntelliJ에서 연결이 안됐다.
    실습 파일을 생성하면서 Git을 동시에 생성하였다.
  • 해결 방법
    VCS(버전 관리) -> 버전 관리 통합 -> Git 선택
  • 새롭게 알게 된 점
    IntelliJ(GUI)에서 이 프로젝트가 Git으로 관리되는지 따로 알아야 하기 때문에 VSC 연결을 통해 알려주는 과정이 필요한다는 것을 알게되었다.

내일 학습 할 것

  • Spring 입문 완강
  • 알고리즘 1문제
  • 회고 / 복습
profile
경북대학교 컴퓨터학부

0개의 댓글