과제 1

  1. 어노테이션을 사용하는 이유는 무엇일까?

    1. @ 시작한다.

    2. 역할:

      • 스프링을 실행할 때 필요한 설정들을 자동으로 해준다.

  2. 나만의 어노테이션은 어떻게 만들 수 있을까?

    1. @interface 키워드를 사용하여 어노테이션을 정의하면 됩니다

 

 

 

1일차 정리

Java

자바 공부 전 알아야할 것

  • 자바관련

    • 컴파일 : 코드 -> binary code로 변경

    • 컴파일러 : 컴파일하는 프로그램 (운영체제마다 다름)

    but 자바는 컴파일러(1개뿐)를 거쳐서 각 운영체제의 JVM으로 감

    • gradle

    • maven

    • 1 JVM → 자바, 그루비, 스칼라, 코틀린 등에서 이용함

      스크린샷 2024-02-19 오후 8.49.23.png

    • 2 JRE

      스크린샷 2024-02-19 오후 8.50.01.png

    • 3 JDK → 자바의 버전,

      • 종류: ORACLE, OpenJDK 등

        • Oracle JDK 개인은 무료 / 기업용은 유료

        • OPenJDK 언제나 무료

      스크린샷 2024-02-19 오후 8.50.55.png

  • 빌드와 실행

    • 빌드란?

      • 소스 코드 파일을 실행시킬 수 있는 하나의 파일로 만듦

        스크린샷 2024-02-19 오후 8.59.43.png

      • 테스트 코드 : 내가 작성한 코드를 자동 테스트해주는 코드를 추가로 작성한 것

    • 실행 : 내가 작성한 코드를 컴파일을 거쳐 작동시키는 것

      • 인터프리터 언어는 컴파일이 필요 없음 (ex: 자바스크립트, 파이썬 등)

  • Java의 빌드 툴

    • 빌드툴 : 빌드과정을 자동으로 해주는 프로그램

      • 외부소스 코드 자동추가, 관리

      • ex) APACHE ANT, Gradle, Maven

      • Ant

        • xml 사용

        • 간단하고 사용하기 쉽다

        • 복잡한 거 사용하면 관리 어려움

        • 사용 잘 안 한다.

      • Maven

        • xml 사용

        • 외부 라이브러리 관리

        • 장황한 빌드 문제 해결

        • 특정경우 xml 복잡해진다.

        • xml 자체의 한계

      • Gradle

        • 설정을 위해 goovy(JVM 언어) 언어 사용

          • xml 사용 x

        • 외부 라이브러리 관리

        • 유연하게 빌드 스크립트 작성가능 성능 좋다

        • 가장 최신 빌드툴

Server

스프링

  • 단축키

    • option + 방향키 위 or 아래 → 적당한 영역 드래그

    • Ctrl + option + O 안 쓰는 import 정리

  • SOLID

    SRP           single resposibility principle

    OCP   open/closed priciple                   변경 x 확장 o

    LSP Liskov substitution principle        기능이 변경되면 안 된다?

    ISP interface segregation principle     인터페이스 분리 원칙

    DIP depency inversion principle

스프링부트는 톰캣이 내장되어 있다. ( jar사용)

  • DTO (Data transfer Object) 데이터 전달 객체

  • 프레임워크

    • 미리 만들어져있는 구조에 코드를 끼워 넣는 것

  • annotation

    • @ 시작한다.

    • 역할:

      • 스프링을 실행할 때 필요한 설정들을 자동으로 해준다.

  • Server

    • Serve + er → 제공하는 것(기능)

    • 요청에 대한 기능을 제공하는 것

      • 인터넷, 네트워크를 통해 요청한다.

  • 네트워크

    • 컴퓨터는 각각의 고유주소(IP)를 가지고 있다. ex 123.1.22.19

    • 인터넷을 통해 데이터를 컴퓨터끼리 주고받음

      • DNS (Domain Name System)

        • 데이터를 받는 컴퓨터 IP 244.66.51.9, port :3000

        • port = 사용하는 프로그램을 가르킴

          • 한 프로그램은 1포트를 사용함.

        • 도메인 244.66.51.9 같은 숫자 대신 이름을 넣는다.

        • 운송장

          • HTTP (Hyper Text Transfer Protocol)

            • HTTP 요청 (데이터 요청)

              • GET /portion?color=red&count=2

                Host:spring.com:3000 (헤더) 여러줄도 가능

                스크린샷 2024-02-19 오후 10.17.15.png

                → 달라/ 패스(자원) ? 세부조건 & 다른 세부조건 (쿼리)

                요청을 받는 컴퓨터와 프로그램 정보 (3000번 프로그램)

              • HTTP 요청을 보내기 전에 미리 약속을 해야함

                • 받을 공간 마련

                • POST → 요청을 받는 컴퓨터가 데이터를 저장

                • 자원의 정보 저장할 때

                  • POST → Body(바디)

                  • PUT (수정해라) → Body(바디)

                • 원하는 정보 달라할 때

                  • GET → Query(쿼리)

                  • DELETE → Query(쿼리)

        • API (Application Programming Interface) (정해진 규칙)

          • 미리 물건을 주거나, 저장할 수 있도록 준비가 되어 있어야함.

          • HTTP 문법을 사용함

            스크린샷 2024-02-19 오후 10.40.16.png

          • @RestController → API 의 진입 지점을 만듦

          • @GetMapping → http method Get

          • 쿼리를 할 때 각각의 파라미터 앞에 @RequestParam 이라 적어준다.

            스크린샷 2024-02-19 오후 10.53.28.png

        • URL (Uniform Resource Locator)

        • 클라이언트 - 서버 구조 (응답)

          • 정보 처리후 200 OK를 보냄 (정보를 저장했어)

            • 요청에 대한 응답을 제공한 컴퓨터 = 서버

            • 요청한 컴퓨터 Client

          • 상태코드

            • 200 OK

            • 300

              • 영구적으로 옮겨

            • 404

              • 찾을 수 없음

            • 500

              • 내부의 문제가 생겼어

          • 응답에는 바디를 담을 수 있음

          • 응답 구조

            스크린샷 2024-02-19 오후 10.24.55.png

          • 요청 - 응답

댓글을 작성해보세요.

채널톡 아이콘