[인프런] 자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! (1)

Erdos·2024년 5월 22일
0

감상

목록 보기
24/42
post-thumbnail

기록을 안 하니 복습과 정리가 어려워서 작성하는 뼈대글...😥

  • 테스트 코드 관련: 실전 코틀린과 스프링 부트로 도서 관리 애플리케이션 개발하기의 2강. 테스트 코드는 무엇인가 참고

section1 생애 최초 API 만들기

🍭java를 공부하기 전에 알아두면 좋은 것들

(JVM, JDK, 빌드, 빌드툴)

🟩 중간정리 #1

  • 컴파일: 인간이 이해하기 쉬운 언어를 기계어로 번역하는 과정
  • 컴파일러: 컴파일을 하는 프로그램
  • 바이트 코드: 0과 1로 이루어진 코드, 컴퓨터가 이해할 수 있다.

🟩 중간정리 #2

원래는 OS 마다 다른 컴파일러가 필요하지만
JAVA는 JVM이 0과 1을 OS 맞게 번역해준다.

  • java, 그루비, 스칼라, 코틀린

  • 자바는 좀 특별하다. 운영체제와 상관없이 똑같은 결과

🟩 중간정리 #3

  • JAVA의 버전 = JDK의 버전
JVMJREJDK
자바 가상 머신의 약자(Java Virtual Machine)자바 실행 환경의 약자(Java Runtime Environment)자바 개발 도구의 약자(Java Development Kit)
OS 별로 존재JRE = JVM + 자바 프로그램, 실행에 필요한 라이브러리 파일 등JDK = JRE + 개발을 위한 도구
바이터리 코드를 읽고 검증하고 실행JVM 실행 환경 구현컴파일러, 디버그 도구 등 포함
  • LTS(Long Time Support): 오래 쓸 수 있는 버전

🟩 중간정리 #4

자바의 종류(참고: https://engineering.linecorp.com/ko/blog/line-open-jdk)

  • Oracle JDK: 오라클이 만든 JDK, 개인에게는 무료. 기업용은 유료
  • Open JDK: Oracle JDK와 비슷한 성능, 언제나 무료.

빌드와 실행

  • 빌드(build)
    소스 코드 파일을 컴퓨터에서 실행할 수 있는 독립 SW 가공물로 변환시키는 과정
    - Artifact: 독립 SW 가공물
  • 빌드 세분화
  1. 소스 코드 컴파일
  2. 테스트 코드 컴파일
    • 테스트 코드: 내가 작성한 코드를 자동 테스트 해주는 코드를 추가로 작성한 것. 테스트 코드 여부에 따라 개발 속도 및 안정성, 품절이 달라질 수 있다.
  3. 테스트 코드 실행
  4. 테스트 코드 리포트 작성
  5. 기타 추가 설정한 작업들을 진행
  6. 패키징 수행
    • 패키징: 다른 사람이 만들어 놓은 오픈 소스들을 내가 사용한 코드와 하나로 묶음
  7. 최종 SW 결과물을 만듦
  • 실행(RUN)
    내가 작성한 코드(혹은 테스트 코드)를 컴파일을 거쳐 작동시켜 보는 것.
    Artifact가 나올 수도 있고, 나오지 않을 수도 있다.

JAVA의 빌드 툴

  • 빌드 툴(build tool)
    - 소스 코드의 빌드 과정을 자동으로 처리해주는 프로그램
    • 외부 소스 코드(외부 라이브러리) 자동 추가, 관리
  • 종류
  1. Ant
    • 설정을 위해 xml 사용
    • 간단하고 사용하기 귀움
    • 복잡한 처리를 하려면 빌드 스크립트가 장황해져 관리가 어렵다
    • 외부 라이브러리를 관리하는 구조가 없다.
    • 지금은 안 써요.
  2. Maven
    • 설정을 위해 xml 사용
    • 외부 라이브러리 관리 가능
    • 장황한 빌드 스크립트 문제 해결
    • 특정 경우에 xml이 복잡해짐
    • xml 자체의 한계
    • 지금도 쓰는 경우가 있으나 신규 프로젝트에는 안 쓰는 편...
  3. Gradle
    • 설정을 위해 groovy 언어 사용
    • 외부 라이브러리 관리 가능
    • 유연하게 빌드 스크립트를 작성할 수 있다.
    • 성능이 뛰어나다
    • 최신

🍭1강 스프링 프로젝트를 시작하는 두 번째 방법

새로운 프로젝트 시작하기

https://start.spring.io/

  • 의존성(Dependencies): 프로젝트에서 사용하는 라이브러리/프레임워크
    - 라이브러리: 프로그래밍을 개발할 때 미리 만들어져 있는 기능을 가져다 사용하는 것
    • 프레임워크: 프로그래밍을 개발할 때 미리 만들어져 있는 구조에 코드를 가져다 끼워 넣는 것

🍭2강 SpringBootApplication과 서버

서버란 무엇인가?

  • server = 기능을 제공하는 것(회원가입, 정보 가져오기, 추천 기능)
  • 어떠한 기능을 제공하는 프로그램, 그 프로그램을 실행시키고 있는 컴퓨터
  • 누군가의 요청이 있어야 한다.

🍭3강 네트워크란 무엇인가?

  • DNS(Domain Name System)
  • 도메인 이름 (외우기 좋게) = IP
  • port : 컴퓨터 내 사용하는 프로그램

🍭4강 HTTP와 API란 무엇인가?

  • HTTP(HyperText Transfer Protocol)
    - 행위(HTTP Method)/컴퓨터에게 원하는 자원(Path)?(구분기호)자원의 세부 조건(Query) = 상태코드
    Host:컴퓨터:프로그램 정보 = 헤더
    = 한 줄 띄기
    (Body) = body
  • HTTP Method
    - GET: 데이터를 달라 + query
    • POST: 데이터를 저장하라 + body
    • PUT: 데이터를 수정하라 + body
    • DELETE: 데이터를 삭제해라 + query
  • API(Application Programming Interface): 정해진 약속을 하여, 특정 기능을 수행하는 것
  • URL(Uniform Resource Location)
  • HTTP 응답
    - 클라이언트(요청을 한 컴퓨터) - 서버(요청에 대한 응답을 제공한 컴퓨터) 구조
    • 상태코드가 핵심이다.
      200 OK
      300 Moved Permanently
      404 NotFound
      500 Internal Server Error

🍭5강 GET API 개발하고 테스트하기

intellij 단축키 (windows)

  • alt + Insert = new

  • 커서 중간에 + Ctrl + w = 영역 확장

  • Ctrl + Alt + O = import 정리

  • Alt + Enter = import

  • Ctrl + Shift + N = 파일 검색

  • Ctrl + e = 최근에 사용한 class 검색

  • Ctrl + Shift + 화살표 = 코드 이동

  • 그 밖의 단축키들 직접 가서 보기
    https://www.jetbrains.com/help/idea/mastering-keyboard-shortcuts.html

  • API를 개발하기 전에 해야 할 것
    앞서 살펴본 것들(API Specification_명세)를 정한다.

🍭6강 POST API 개발하고 테스트하기

  • JSON이란?
    객체 표기법, 즉 무언가를 표현하기 위한 형식
  • 한 controller class에 여러 API를 추가할 수 있다.

🍭7강 유저 생성 API 개발

🍭8강 유저 조회 API 개발과 테스트

  • HTTP Method: GET
  • HTTP Path: /user
  • 쿼리: 없음
  • 결과 반환
    id : long(list에 담겨 있는 유저의 순서)
    name : String(null 불가능)
    age : Integer

🟩 7,8강 http://localhost:8080/v1/index.html Error인 경우,
(참고:
https://www.inflearn.com/questions/827529/7%EA%B0%95-%EC%A3%BC%EC%86%8C-%ED%8E%98%EC%9D%B4%EC%A7%80-whitelabel-error-page)

스프링 프로젝트를 시작하는 두 번째 방법으로 하고 있어서였다.
resources만 복붙하니 해결.

🍭9강 Section1 정리

  1. 스프링 프로젝트를 시작하는 방법과 실행하는 방법
  2. 네트워크, IP, 도메인, 포트, HTTP 요청과 응답 구조, 클라이언트-서버 구조, API 등 기반지식
  3. Spring Boot를 이용해 GET API와 POST API를 만드는 방법

이번에 우리가 만든 API의 문제점: 서버를 다시 켜니까 사용자 정보가 사라짐.(유저 정보는 메모리에서만 유지되고 있음)

profile
수학을 사랑하는 애독자📚 Stop dreaming. Start living. - 'The Secret Life of Walter Mitty'

0개의 댓글