공부/Spring39 [HTTP](1) 웹 기본 지식 각 인터넷에는 고유한 IP(인터넷 프로토콜)가 있다. IP는 패킷(Packet)이라는 통신 단위로 데이터를 전달한다. 패킷에는 출발지 IP, 목적지 IP, 기타 정보 등을 포함해서 클라이언트 -> 서버로 전달한다. *비연결성: 패킷을 받을 대상이 없거나 서비스 불능 상태여도 패킷을 전송한다. *비신뢰성: 중간에 패킷이 사라지거나, 패킷의 순서가 보장되지 않는다. *프로그램 구분: 같은 IP를 사용하는 서버에서 통신하는 애플리케이션이 둘 이상이면 구분이 어렵다. 애플리케이션 계층 - HTTP, FTP 전송 계층 - TCP, UDP 인터넷 계층 - IP 네트워크 인터페이스 계층 - LAN 드라이버, LAN 장비 순서 1. 애플리케이션에서 프로그램이 메시지를 생성한다. 2. SOCKET 라이브러리를 통해 TC.. 2024. 1. 18. [스프링 핵심](9) 웹 스코프 앞서 살펴본 대로, 싱글톤은 스프링 컨테이너의 시작과 끝을 함께 한다. 프로토타입은 생성과 의존관계 주입, 그리고 초기화까지만 진행하는 스코프다. 웹 환경에서만 동작한다. 종료 메서드가 호출될 때까지 진행된다. * request: HTTP 요청 하나가 들어오고 나갈 때까지 유지. * session: HTTP Session과 동일한 생명주기. * application: 서블릿 컨텍스트(ServletContext)와 동일한 생명주기. * websocket: 웹 소켓과 동일한 생명주기. 동시에 여러 HTTP요청이 오면 정확히 어떤 요청이 남긴 로그인지 구분하기 어렵다. 이럴때 request 스코프를 활용한다. uuid를 활용해 http 요청을 구분하는 예제를 구현해본다. package hello.core.co.. 2024. 1. 18. [스프링 핵심](8) 빈 스코프 스프링은 다양한 스코프를 지원한다. *싱글톤: 기본 스코프, 스프링 컨테이너의 시작과 종료까지 유지되는 가장 넓은 범위. *프로토타입: 스프링 컨테이너는 프로토타입 빈의 생성과 의존관계 주입까지만 관여하고 더는 관리하지 않는 매우 짧은 범위. *웹 관련 스코프 *request: 웹 요청이 들어오고 나갈 때까지 유지. *session: 웹 세션이 생성되고 종료될 때까지 유지. *application: 웹의 서블릿 컨텍스트와 같은 범위로 유지. 빈 스코프 지정 방법 @Scope("prototype") @Component public class HelloBean {} @Scope("prototype") @Bean PrototypeBean HelloBean() { return new HelloBean(); } .. 2024. 1. 18. [스프링 핵심](7) 빈 생명주기 콜백 애플리케이션 시작 시점에 필요한 연결을 미리 해두고, 애플리케이션 종료 시점에 연결을 모두 종료하는 작업을 진행하려면 객체의 초기화와 종료 작업이 필요하다. 스프링을 통해 초기화 작업과 종료 작업을 어떻게 진행하는지 알아보자. 스프링 빈은 '객체 생성 -> 의존관계 주입' 과 같은 라이프사이클을 가진다. 의존관계 주입이 완료된 이후 초기화를 진행해야한다. 그렇다면 의존관계 주입이 완료된 시점은 어떻게 알까? 바로, 스프링은 스프링 빈에게 콜백 메서드를 통해서 초기화 시점을 알려주는 다양한 기능을 제공한다. 또한 스프링 컨테이너가 종료되기 직전에 소멸 콜백을 준다. 1. 스프링 컨테이너 생성 -> 2. 스프링 빈 생성 -> 3. 의존관계 주입 -> 4. 초기화 콜백 -> 5. 사용 -> 6. 소멸 전 콜백.. 2024. 1. 16. [스프링 핵심](6) 의존관계 자동 주입 + 롬복 의존관계 주입 방법은 크게 4가지가 있다. 1. 생성자 주입 2. 수정자 주입(setter 주입) 3. 필드 주입 4. 일반 메서드 주입 ============================== 1. 생성자 주입 생성자 호출 시점에 의존관계 주입. *딱 1번만 호출되는 것이 보장된다. *불변, 필수 의존관계에 사용 @Component public class OrderServiceImpl implements OrderService { private final MemberRepository memberRepository; private final DiscountPolicy discountPolicy; @Autowired//생략 가능 public OrderServiceImpl(MemberRepository me.. 2024. 1. 16. [스프링 핵심](5) 컴포넌트 스캔 + Autowired 지금까지는 스프링 빈을 등록할때 자바 코드의 @Bean 나 XML을 사용했다. 귀찮은 개발자를 위해, 스프링은 설정 정보가 없어도 자동으로 스프링 빈을 등록하는 컴포넌트 스캔이라는 기능을 제공한다. 또한, 의존관계도 자동으로 주입하는@Autowired 기능도 제공한다. package hello.core; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.FilterType; import static org.springframework.context.anno.. 2024. 1. 16. 이전 1 2 3 4 5 6 7 다음