HTTP 요청 데이터 - 개요 “GET-쿼리 파라미터” /url=?username=hello&age=20 메시지 바디 없이, URL의 쿼리 파라미터에 데이터를 포함하여 전달 검색 혹은 필터, 페이징에서 많이 사용된다. “POST - HTML FORM” content-type:application/ 메시지 바디에 쿼리 파라미터 형식으로 전달 username=hello&age=20 “HTTP message body”에 데이터를 직접 담아 요청 HTTP AI에서 주로 사용 : JSON, XML, TEXT HTTP 요청 데이터 - GET 쿼리 파라미터 전달해야하는 데이터 username=hello age=20 메시지 바디 없이 URL의 “쿼리 파라미터”를 사용하여 데이터를 전달하려고 한다. /** * 1. 파라..
SpringBoot
동시요청 (쓰레드) - WAS에서 진행 서블릿이라는 객체를 누가 요청하는가의 대한 대답 애플리케이션 코드를 하나하나 순차적으로 실행하는 것은 쓰레드 쓰레드가 존재하지 않으면 자바 애플리케이션 실행이 불가능 쓰레드는 한번에 하나의 코드 라인만 수행 요청1 의 처리중에 모종의 이유로 처리가 지연되면 요청2 가 수행되지 못하고, 요청1 이 계속해서 스레드를 차지하고 있기 때문에 새로운 스레드가 생성되어야 한다. 그러나 요청마다 쓰레드가 생성 됐을때엔 장점과 단점이 존재한다. 장점 동시 요청을 처리할 수 있다. 리소스의 허용 한계까지 처리가 가능하다. 하나의 쓰레드가 지연되어도, 나머지 쓰레드는 정상 동작한다. 단점 쓰레드의 생성 비용이 매우 높다.( 응답 속도가 늦어질 수 있다 ) 쓰레드는 컨텍스트 스위칭 비..

HTTP 상태코드 1xx ( Informational ) : 요청이 수신되어 처리중 2xx ( Successful ) : 요청 정상 처리 200 OK : 결과가 정상적으로 처리됐을때 201 Created : 요청이 성공해서 새로운 리소스가 생성됐을떄 ( HTTP Header로 식별 ) 202 Accepted : 요청이 접수됐지만 처리는 완료되지 않았음 ( batch 처리에 사용 ) 204 No Content : 서버가 요청을 성공적으로 수행했지만, 본문에 보낼 데이터가 없음 3xx ( Redirection ) : 요청을 완료하려면 추가 행동 필요 리다이렉션이란 ? 웹 브라우저는 3xx 응답의 결과에 Location 헤더가 있으면, Location 위치로 자동 이동함을 뜻함 영구 리다이렉션 : 특정 리소스..

비 연결성 HTTP는 기본적으로 비연결성을 가진다. 일반적으로 초 단위의 이하의 빠른 속도로 응답한다. 1시간 동안 수천명이 서비스를 사용해도 실제 서버에서 동시에 처리해야 하는 요청은 수십개 이하로 상당히 적은편에 속한다. 서버 자원을 매우 효율적으로 사용할 수 있다. 이러한 특성에는 한계가 존재한다. TCP/IP 연결을 새로 맺어야한다. - 3 way handshake 시간 추가 웹 브라우저로 사이트를 요청하면 HTML 뿐만 아니라, 자바스크립트, CSS 추가 이미지 등등 수 많은 자원이 함께 다운로드 된다. 이러한 문제점들을 지금은 HTTP 지속 연결을 사용하여 해결하고 있다. HTTP 헤더 HTTP 전송에 필요한 모든 부가정보가 들어있다. 표준 헤더가 너무 많고, 필요시 임의의 헤더가 추가가 가능..
IP 주소 부여 클라이언트에서 서버로 통신할때 필요한 최소한의 규칙이다. 클라이언트에서도 주소가 필요하고, 내가 데이터를 보낼 서버에도 주소가 필요하다. IP(인터넷 프로토콜)의 역할은 패킷이라는 통신 데이터를 전달하기 위한 매개체이다. IP 패킷 출발지, 목적지의 IP를 넣고 전송할 데이터를 입력한다. 그렇다면 서버에서도 출발지, 목적지의 IP를 넣고 클라이언트쪽으로 돌려보내고 무사히 도착했다면 데이터 전송이 완료된다. 클라이언트에서 전송할때와 서버에서 전송할때 경로가 다를수도 있다. 비 연결성 : 패킷을 받을 대상이 없거나, 서비스 불가 상태여도 패킷은 전송된다. (단방향) 비 신뢰성 : 중간에 패킷이 유실되거나 순서대로 도착하지 않을 수 있다.한계 중복성 : 같은 IP를 사용하는 서버에서 통신하는 ..

싱글톤 컨테이너 스프링은 시작부터 기업용 온라인 서비스 기술을 지원하기 위해서 탄생했다. 대부분의 스프링 애플리케이션은 웹 애플리케이션이다. 즉 여러 고객의 동시요청을 커버해야한다. 고객이 요청할 때마다 새로운 객체를 생성할 경우, 요청마다 트래픽이 생기고 트래픽마다 객체가 생기게되어 메모리의 낭비가 심하게된다. 그렇기 때문에 객체를 딱 1개만 생성하고, 나머지는 공유하도록 설계해야하는데 이런 설계를 싱글톤 패턴을 적용했다고 한다. private를 사용하여 외부에서 임의로 객체를 생성할 수 없게 만들고, 클래스의 인스턴스를 딱 1개만 사용하도록 보장해야한다. private static final SingletonService instance = new SingletonService()우 싱글톤 패턴의 문..

스프링 빈 조회 모든 빈을 조회하는 방법을 테스트한다. 실제로는 모든 빈을 출력할 일은 없고 기본적인 조회방법을 알기 전에 진행한다. package hello.core.notico.beanfind; import hello.core.notico.AppConfig; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; import org.springframework.context.annotation.AnnotationConfigApplicationContext; public class ApplicationContextInfoTest { AnnotationConfigApplicationContext ac = new Annota..

스프링 컨테이너와 스프링 빈 기존 Java로 구성한 프로그래맹을 spring을 적용하는 것으로 바꾸는 과정, 볼드 처리된 코드들이 추가된 부분이다. package hello.core.notico; import hello.core.notico.discount.DiscountPolicy; import hello.core.notico.discount.FixDiscountPolicy; import hello.core.notico.discount.RateDiscountPolicy; import hello.core.notico.member.MemberRepository; import hello.core.notico.member.MemberService; import hello.core.notico.member.Me..