반응형

분류 전체보기 294

3. PORT

내 PC에서 게임, 화상통화, 웹 브라우저를 사용하고 있다. (클라 PC가 여러개 서버랑 통신해야한다.) 내 IP로 패킷들이 날라올텐데 게임, 화상통화, 웹브라우저 중 어디에 필요한 패킷인지 알 수 없다. 이때 PORT로 구분한다. IP - 목적지 서버를 찾는거 (아파트) PORT - 서버안에서 돌아가는 애플리케이션을 찾는거 (몇동, 몇호) PORT 0 ~ 65535 까지 할당 가능 0 ~ 1023 : 잘 알려진 포트로 사용하지 않는것이 좋음 FTP - 20, 21 TELNET - 23 HTTP - 80 HTTPS - 443

2. TCP, UDP

IP 프로토콜에서 발생하는 문제를 TCP가 해결해준다. 인터넷 프로토콜 스택의 4계층 프로토콜 계층 채팅 프로그램으로 미국 친구에게 메시지를 전송하고 싶다. 그럴려면 어떻게 해야할까? 먼저 Socket 라이브러리를 통해서 OS 계층에 메시지를 넘긴다. OS 계층에서 메시지에 TCP 정보를 씌운다. TCP 밑엔 IP 계층이있다. 그래서 TCP정보 밖에다가 또 IP 패킷을 생성한다. 그리고 마지막에 네트워크 인터페이스를 통해 LAN카드를 통해서 나갈때 이더넷 프레임을 포함해서 나간다. TCP 특징 - 전송 제어 프로토콜 (Transmission Control Protocal) 연결지향 - TCP 3 way handshake (가상연결) - 클라이언트랑 서버랑 연결된걸 확인하고 메시지를 보냄 1. 일단 TCP..

1. IP (Internet Protocol)

클라이언트는 어떻게 서버에 요청을 보낼까? 인터넷에서 컴퓨터 둘은 어떻게 통신할까? 이걸 알려면 IP에 대해 학습해야한다 복잡한 인터넷망에서 Hello, World! 란 메세지를 미국에 있는 친구에게 보내야한다. 그럴려면 최소한의 규칙 있어야한다. 그게 바로 IP 주소이다. 클라이언트인 내가 IP주소를 부여받아야한다. 메시지를 보내야하는 친구에게도 서버에 IP주소가 있어야한다 IP (인터넷 프로토콜)의 역할은? 지정한 IP 주소에 데이터 전달한다 패킷이라는 통신 단위로 데이터 전달한다 메시지를 그냥 보내는게 아니라 IP패킷이란 규칙이있다. IP 패킷이란? 메시지를 보내기전에 출발지 IP, 목적지 IP, 메시지를 패킷에 넣어서 던지는것 IP 프로토콜의 한계 비연결성 패킷을 받을 대상이 없거나 서비스 불능 ..

58. 스코프와 프록시

이번에는 프록시 방식을 사용해보자 @Component @Scope(value = "request", proxyMode = ScopedProxyMode.TARGET_CLASS) public class MyLogger { } 여기가 핵심이다. `proxyMode = ScopedProxyMode.TARGET_CLASS` 를 추가해주자. - 적용 대상이 인터페이스가 아닌 클래스면 `TARGET_CLASS` 를 선택 - 적용 대상이 인터페이스면 `INTERFACES` 를 선택 이렇게 하면 MyLogger의 가짜 프록시 클래스를 만들어두고 HTTP request와 상관 없이 가짜 프록시 클래스를 다른 빈에 미리 주입해 둘 수 있다. 이제 나머지 코드를 Provider 사용 이전으로 돌려두자. package hell..

57. 스코프와 Provider

첫번째 해결방안은 앞서 배운 Provider를 사용하는 것이다. 간단히 ObjectProvider를 사용해보자. package hello.core.web; import hello.core.common.MyLogger; import lombok.RequiredArgsConstructor; import org.springframework.beans.factory.ObjectProvider; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; import..

56. request 스코프 예제 만들기

웹 환경 추가 웹 스코프는 웹 환경에서만 동작하므로 web 환경이 동작하도록 라이브러리를 추가하자. build.gradle에 추가 //web 라이브러리 추가 implementation 'org.springframework.boot:spring-boot-starter-web' 이제 `hello.core.CoreApplication` 의 main 메서드를 실행하면 웹 애플리케이션이 실행되는 것을 확인할 수 있다. Tomcat started on port(s): 8080 (http) with context path '' Started CoreApplication in 0.914 seconds (JVM running for 1.528) 참고: `spring-boot-starter-web` 라이브러리를 추가하면 ..

55. 웹 스코프

싱클톤 스프링 컨테이너의 시작과 끝까지 함께하는 매우 긴 스코프 프로토타입 스프링 컨테이너에서 생성과 의존관계 주입, 그리고 초기화까지만 함께하는 특별한 스코프 이번엔 웹스코프에 대해 알아보자 웹 스코프의 특징 웹 스코프는 웹 환경에서만 동작한다 웹 스코프는 프로토타입과 다르게 스프링이 해당 스코프의 조요시점까지 관리한다. 따라서 종료 메서드가 호출된다 웹 스코프의 종류 request: HTTP 요청 하나가 들어오고 나갈 때 까지 유지되는 스코프, 각각의 HTTP 요청마다 별도의 빈 인스턴 스가 생성되고, 관리된다. session: HTTP Session과 동일한 생명주기를 가지는 스코프 application: 서블릿 컨텍스트( `ServletContext` )와 동일한 생명주기를 가지는 스코프 webs..

54. 프로토타입 스코프 - 싱글톤 빈과 함께 사용시 Probider로 문제해결

싱글톤 빈과 프로토타입 빈을 함께 사용할 때, 어떻게 하면 사용할 때 마다 항상 새로운 프로토타입 빈을 생성할 수 있을까? 스프링 컨테이너에 요청 가장 간단한 방법은 싱글톤 빈이 프로토타입을 사용할 때 마다 스프링 컨테이너에 새로 요청하는 것이다. public class PrototypeProviderTest { @Test void providerTest() { AnnotationConfigApplicationContext ac = new AnnotationConfigApplicationContext(ClientBean.class, PrototypeBean.class); ClientBean clientBean1 = ac.getBean(ClientBean.class); int count1 = clientB..

53. 프로토타입 스코프 - 싱글톤 빈과 함께 사용시 문제점

스프링 컨테이너에 프로토타입 스코프의 빈을 요청하면 항상 새로운 객체 인스턴스를 생성해서 반환한다. 하지만 싱글톤 빈과 함께 사용할 때는 의도한 대로 잘 동작하지 않으므로 주의해야 한다. 그림과 코드로 설명하겠다. 먼저 스프링 컨테이너에 프로토타입 빈을 직접 요청하는 예제를 보자. 프로토타입 빈 직접 요청 스프링 컨테이너에 프로토타입 빈 직접 요청1 1. 클라이언트A는 스프링 컨테이너에 프로토타입 빈을 요청한다. 2. 스프링 컨테이너는 프로토타입 빈을 새로 생성해서 반환(**x01**)한다. 해당 빈의 count 필드 값은 0이다. 3. 클라이언트는 조회한 프로토타입 빈에 `addCount()` 를 호출하면서 count 필드를 +1 한다. 결과적으로 프로토타입 빈(**x01**)의 count는 1이 된다..

52. 프로토타입 스코프

프로토타입 스코프 싱글톤 스코프의 빈을 조회하면 스프링 컨테이너는 항상 같은 인스턴스의 스프링 빈을 반환한다. (싱글톤 패턴은 하나의 인스턴스를 반환하는게 보장된거라서) 반면에 프로토타입 스코프를 스프링 컨테이너에 조회하면 스프링 컨테이너는 항상 새로운 인스턴스를 생성해서 반환한다. (프로토타입은 스프링 컨테이너가 생성과 주입까지만 관여하고 그 후로 관리하지 않기 때문에) 싱글톤 빈 요청 싱글톤 스코프의 빈을 스프링 컨테이너에 요청한다. 스프링 컨테이너는 본인이 관리하는 스프링 빈을 반환한다. 이후에 스프링 컨테이너에 같은 요청이 와도 같은 객체 인스턴스의 스프링 빈을 반환한다. 프로토타입 빈 요청1 1. 프로토타입 스코프의 빈을 스프링 컨테이너에 요청한다. 2. 스프링 컨테이너는 이 시점에 프로토타입 ..

반응형