과제 1
어노테이션을 사용하는 이유는 무엇일까?
@ 시작한다.
역할:
스프링을 실행할 때 필요한 설정들을 자동으로 해준다.
나만의 어노테이션은 어떻게 만들 수 있을까?
@interface 키워드를 사용하여 어노테이션을 정의하면 됩니다
1일차 정리
Java
자바 공부 전 알아야할 것
자바관련
컴파일 : 코드 -> binary code로 변경
컴파일러 : 컴파일하는 프로그램 (운영체제마다 다름)
but 자바는 컴파일러(1개뿐)를 거쳐서 각 운영체제의 JVM으로 감
gradle
maven
1 JVM → 자바, 그루비, 스칼라, 코틀린 등에서 이용함
2 JRE
3 JDK → 자바의 버전,
종류: ORACLE, OpenJDK 등
Oracle JDK 개인은 무료 / 기업용은 유료
OPenJDK 언제나 무료
빌드와 실행
빌드란?
소스 코드 파일을 실행시킬 수 있는 하나의 파일로 만듦
테스트 코드 : 내가 작성한 코드를 자동 테스트해주는 코드를 추가로 작성한 것
실행 : 내가 작성한 코드를 컴파일을 거쳐 작동시키는 것
인터프리터 언어는 컴파일이 필요 없음 (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 같은 숫자 대신 이름을 넣는다.
ex) spring.com, port:3000
즉 244.66.51.9 = 도메인 이름.com
운송장
HTTP (Hyper Text Transfer Protocol)
HTTP 요청 (데이터 요청)
GET /portion?color=red&count=2
Host:spring.com:3000 (헤더) 여러줄도 가능
→ 달라/ 패스(자원) ? 세부조건 & 다른 세부조건 (쿼리)
요청을 받는 컴퓨터와 프로그램 정보 (3000번 프로그램)
HTTP 요청을 보내기 전에 미리 약속을 해야함
받을 공간 마련
POST → 요청을 받는 컴퓨터가 데이터를 저장
자원의 정보 저장할 때
POST → Body(바디)
PUT (수정해라) → Body(바디)
원하는 정보 달라할 때
GET → Query(쿼리)
DELETE → Query(쿼리)
API (Application Programming Interface) (정해진 규칙)
미리 물건을 주거나, 저장할 수 있도록 준비가 되어 있어야함.
HTTP 문법을 사용함
@RestController → API 의 진입 지점을 만듦
@GetMapping → http method Get
쿼리를 할 때 각각의 파라미터 앞에 @RequestParam 이라 적어준다.
URL (Uniform Resource Locator)
http://spring.com:3000/portion?color=red?count=2
http → 약속 프로토콜
// → 구분기호
spring.com:3000 → 도메인 이름 (IP로 대체 가능)
portion = Path(자원의 경로)
? → 구분기호
color=red?count=2 쿼리(추가정보)
클라이언트 - 서버 구조 (응답)
정보 처리후 200 OK를 보냄 (정보를 저장했어)
요청에 대한 응답을 제공한 컴퓨터 = 서버
요청한 컴퓨터 Client
상태코드
200 OK
300
영구적으로 옮겨
404
찾을 수 없음
500
내부의 문제가 생겼어
응답에는 바디를 담을 수 있음
응답 구조
요청 - 응답
댓글을 작성해보세요.