캐시 기본 동작 캐시가 없을 때 데이터가 변경되지 않아도 계속 네트워크를 통해서 데이터를 다운로드 받아야 한다. 브라우저 로딩 속도가 느리고 인터넷 네트워크는 비싸다. 캐시 적용 응답 HTTP/1.1 200 OK Content-Type: image/jpeg cache-control: max-age=60 Content-Length: 34012 lkj123kljoiasudlkjaweioluywlnfdo912u34ljko98udjkla slkjdfl;qkawj9;o4ruawsldkal;skdjfa;ow9ejkl3123123 cache-control: max-age=60 를 통해 60초동안 유효한 브라우저 캐시를 생성 60초 안에 재요청시 브라우저 캐시에 있는 정보를 통해 조회 캐시 가능 시간 동안 네트워크를 ..
HTTP 헤더 HTTP 전송에 필요한 모든 부가 정보 예 ) 메시지 바디의 내용, 크기, 압축, 인증, 요청 클라이언트, 서버 정보, 캐시 관리 정보 등 필요시 임의의 헤더 추가 가능 표준 헤더 : https://en.wikipedia.org/wiki/List_of_HTTP_header_fields 필요시 임의의 헤더 추가 가능 (helloworld: hihi) HTTP BODY 메시지 본문을 통해 표현 데이터 전달 (본문 = 페이로드) RFC7230(최신), 표현은 요청이나 응답에서 전달할 실제 데이터 (표현 헤더 + 표현 데이터) 표현 Content-Type : 표현 데이터의 형식 예 ) text/html, application/json , image/png Content-Encoding : 표현 데..
상태 코드 클라이언트가 보낸 요청의 처리 상태를 응답해서 알려주는 기능 1xx (Informational): 요청이 수신되어 처리중 (거의 사용하지 않음) 2xx (Successful): 요청 정상 처리 3xx (Redirection): 요청을 완료하려면 추가 행동이 필요 4xx (Client Error): 클라이언트 오류, 잘못된 문법등으로 서버가 요청을 수행할 수 없음 5xx (Server Error): 서버 오류, 서버가 정상 요청을 처리하지 못함 2xx (Successful) 클라이언트의 요청을 성공적으로 처리 200 OK (가장 많이 보는 케이스) 201 Created 요청 성공해서 새로운 리소스가 생성됨 예 ) 회원가입 202 Accepted 요청이 접수 되었으나 처리가 완료되지 않았음 예 )..
HTTP URI 설계 URI (Uniform Resource Identifier) : 리소스 식별자 회원을 등록하고 수정하고 조회하는게 리소스가 아니다. 미네랄을 캐라 -> 캐라가 아닌 미네랄이 리소스이다. 리소스 식별, URI 계층 구조 활용 회원 목록 조회 /members 회원 조회 /members/{id} 회원 등록 /members/{id} 회원 수정 /members/{id} 회원 삭제 /members/{id} URI는 리소스만 식별 리소스는 해당 리소스를 대상으로하는 행위를 분리 리소스 : 회원 행위 : 조회, 등록, 삭제, 변경 행위 (메서드는) HTTP 메서드로 구분한다 HTTP 메서드 주요 메서드 GET : 리소스 조회 POST : 요청 데이터 처리, 주로 등록 PUT : 리소스를 대체, 해..
HTTP Hyper Text Transper Protocol HTML 같은 리소스 들을 가져올 수 있도록 해주는 프로토콜 HTML, TEXT, 이미지, 음성, 영상, 파일, JSON, XML (API) 등 모든 형태 데이터 전송 가능 서버간에 데이터를 주고 받을 때도 대부분 HTTP를 사용한다. HTTP 역사 HTTP/0.9 1991년: GET 메서드만 지원, HTTP 헤더X HTTP/1.0 1996년: 메서드, 헤더 추가 HTTP/1.1 1997년: 가장 많이 사용 RFC2068 (1997) -> RFC2616 (1999) -> RFC7230~7235 (2014) RFC : Request For Comments : 비평을 기다리는 문서라는 의미로 메모형태 HTTP/2 2015년: 성능 개선 HTTP/3..
빈 스코프 빈 스코프란 빈이 존재할 수 있는 범위를 뜻한다. 스프링은 싱글톤, 프로토타입, 웹 관련 스코프 등 다양한 스코프를 지원한다. 싱글톤 : 기본 스코프, 컨테이너의 시작과 종료까지 유지되는 가장 넓은 범위의 스코프 프로토타입 : 컨테이너는 프로토타입 빈의 생성과 의존관계 주입까지만 관여하는 짧은 범위의 스코프 웹 관련 스코프 request : 웹 요청이 들어오고 나갈 때까지 유지되는 스코프 session : 웹 세션이 생성되고 종료될 때 까지 유지되는 스코프 application : 웹의 서블릿 컨텍스트와 같은 범위로 유지되는 스코프 빈 요청 싱글톤 빈 요청 싱글톤 스코프의 빈을 스프링 컨테이너에 요청, 스프링 컨테이너는 관리하는 스프링 빈을 반환 같은 요청이와도 같은 객체 인스턴스의 스프링 빈..
빈 생명주기 DB 커넥션 풀이나, 네트워크 소켓처럼 애플리케이션 시작 시점에 필요한 연결을 미리 해두고, 종료 시점에 모두 종료하는 작업을 진행하려면, 객체의 초기화와 종료 작업이 필요하다. 빈의 생명주기에 대해 알아보자. package hello.core.lifecycle; public class NetworkClient { private String url; public NetworkClient() { System.out.println("생성자 호출, url = " + url); connect(); call("초기화 연결 메시지"); } public void setUrl(String url) { this.url = url; } public void connect() { System.out.printl..
의존 관계 주입 II 개발을 하다보면 대부분 불변으로 설계를 하고, 생성자 주입으로 final 키워드를 사용하게 된다. 이 부분을 필드 주입처럼 편하게 사용할 수 있는 방법이 있다. 롬복에 대해서 간단하게 정리하고 이어서 의존 관계 주입에 대해 알아보자. Lombok @Getter/@Setter : 게터 세터 기능을 제공한다. @NoArgsConstructor : 빈 생성자(기본 생성자)를 생성해준다. @AllArgsConstructor : 필드 값을 모두 포함한 생성자를 생성해준다. @RequiredArgsConstructor :final 필드와 @NonNull이 붙은 필드에 대한 생성자를 생성해준다. @ToString : toString 기능을 제공하며 exclude를 사용하여 제외할 필드를 선택할 ..