본문 바로가기

분류 전체보기

(189)
[Network] URI와 웹브라우저 요청 흐름 URI(Uniform Resource Identifier) 직역 : 자원을 식별하는 통합된 방법 URI는 URL인 로케이터(locator)와 URN인 이름(name) 또는 둘다 같이 분류될 수 있다. URL : 자원의 위치를 알려주는 주소 (http://naver.com/book/novel?name="1984") URN : 자원의 이름 (urn:naver://book:1984) 위치는 변할 수 있지만 이름은 변하지 않는다. URN은 리소스에 이름을 부여한다. URN만으로 실제 리소스를 찾을 수 있는 방법이 보편화 되지 않음 URN은 다소 URL과 비슷하게 생겼지만 현재는 쓰이고 있지 않다. 그렇기에 보편적으로 URI와 URL을 동일한 의미로 이야기한다. URL 문법 scheme://[userinfo@]h..
[Network] 인터넷 통신규칙(프로토콜) 프로토콜이란? 네트워크 환경(인터넷)에서 서로 원할하게 통신하기 위해 약속한 규약이다. IP프로토콜, TCP프로토콜, HTTP프로토콜, Telnet, FTP 등등 다양한 규약이 있다. 인터넷 프로토콜은 4계층으로 나뉨 https://hahahoho5915.tistory.com/15 인터넷 프로토콜 스택의 4계층 애플리케이션 계층 - HTTP, FTP 전송 계층 - TCP, UDP 인터넷 계층 - IP 네트워크 인터페이스 계층 IP 프로토콜 서버와 클라이언트 간 ip만으로 통신함, 패킷 이라는 단위로 데이터를 전달하게 됨 인터넷은 출발지에서 목적지 간 직통하는 것이 아닌 중간에 여러 노드들을 갈아타면서 전송하게됨 그렇기에 아래와 같은 문제가 있음 비연결성 : 대상이 없어도 패킷을 전송하게 됨 비신뢰성 : ..
[Network] Proxy Server 프록시란 네트워크 위의 서버와 클라이언트 사이에서 통신을 중계해주는 것이며 '프록시 서버'라고 부른다. 특정 IP대역만 접근을 허용하거나, 아니면 불필요하게 요청되는ㅂ 데이터를 프록시 서버에서 캐시된 데이터를 전송하여 트래픽의 낭비를 줄이는 등 효과를 얻을 수 있다. 프록시 서버의 종류 Forward 프록시 클라이언트(내부망) → Forward 프록시 서버 -> 인터넷 클라이언트와 접근할 서버(인터넷) 사이에 위치한 것이며 사용자가 정해진 사이트만 접근할 수 있게 끔 사용 환경을 제한할 수 있어 기업과 같은 환경에서 많이 사용한다. 대역폭 사용을 감소시킬 수 있으며, 구현과 정책 다루기가 쉽고, 비용이 저렴하다. 사용자 측에서 설정하므로 프록시 서버를 사용하는 것을 인식할 수 있다. Rev..
[Spring] 웹 스코프 웹 스코프의 특징 웹 스코프는 웹 환경에서만 동작한다. 웹 스코프는 프로토타입과 다르게 스프링이 종료시점 까지 관리한다. (종료 메서드 호출됨) 종류 request : ****HTTP 요청 하나가 들어오고 나갈 때 까지 유지되는 스코프, 각각의 요청마다 별도 빈 인스턴스가 생성되고 관리됨 session : http session과 동일한 생명주기를 가지는 스코프 application : 서블릿 컨텍스트(ServletContext)와 동일한 생명주기를 가지는 스코프 websocket : 웹 소켓과 동일한 생명주기를 가지는 스코프 설명보다 예제를 만들어보는 것이 이해가 더 잘될 것이다. request 스코프 예제 만들기 웹 환경 추가하기 웹 스코프는 웹 환경에서만 동작하므로 web 환경이 동작하도록 라이브러..
[Spring] 빈 스코프(singleton bean, prototype bean) 빈 스코프란? 스프링 빈은 스프링 컨테이너 시작 때 생성되어 컨테이너 종료까지 유지된다. 이는 스프링 빈이 기본적으로 싱글톤 스코프이기 때문이다. 스코프는 빈이 존재할 수 있는 범위를 뜻한다. 스프링은 다음과 같은 스코프를 지원한다. 싱글톤 : 기본 스코프, 스프링 컨테이너의 시작과 종료시 까지 유지되는 가장 넓은 범위의 스코프이다. 프로트타입 : 스프링 컨테이너는 프로트타입 빈의 생성과 의존관계 주입까지만 관여하고 더는 관리하지 않는 매우 짧은 범위의 스코프이다. 웹 관련 스코프 request : 웹 요청이 들어오고 나갈 때 까지 유지되는 스코프 session : 세션이 생성되고 종료될 떄 까지 유지되는 스코프 application : 웹의 서블릿 컨텍스와 같은 범위로 유지되는 스코프이다. 등록 예제*..
[Spring] 빈 생명주기의 콜백 빈 생명주기 콜백은 스프링 빈이 생성되거나 종료될 때 빈 안의 메소드를 호출하는 것이다. 목차 빈 생명주기 콜백 시작 인터페이스 InitalizingBean, DisposableBean 빈 등록 초기화, 소멸 메서드 애노테이션 @PostConstruct, @PreDestory 빈 생명주기 콜백 시작 DBCP(데이터베이스 커넥션 풀), 네트워크 소켓 등 애플리케이션 시작 전 필요한 연결을 미리 하거나 종료될 때 안전하게 종료할 수 있는 작업을 진행하려면 객체의 초기화와 종료 작업이 필요하다. 예제로 어떻게 초기화와 종료 작업이 이루어지는지 알아보자. public class NetworkClient { private String url; public NetworkClient() { System.out.pri..
[Spring]컴포넌트 스캔과 의존관계 자동 주입 (Component Scan, Autowired) 컴포넌트 스캔이란? 기존에 빈을 등록할 때는 자바 설정파일이나 XML을 이용해 일일이 등록해주어야 했다. 실무에서는 이렇게 등록해주어야 할 빈이 수십, 수백개가 되므로 누락하거나 반복해야하는 문제점이 발생한다. 그렇기에 스프링은 설정정보가 없어도 자동으로 스프링 빈을 등록해주는 컴포넌트 스캔 이라는 기능을 제공한다. @Configuration @ComponentScan( excludeFilters = @ComponentScan.Filter(type = FilterType.ANNOTATION, classes = Configuration.class) ) public class AutoAppConfig { } 컴포넌트 스캔을 사용하려면 설정정보에 @ComponentScan 어노테이션을 달아준다. 기존 설정파일..
[Spring] 스프링과 싱글톤 웹서비스는 대량의 트래픽을 고려하여 설계되어야 한다. 스프링은 기업의 온라인 서비스 기술을 지원하기 위해 탄생했기에 대량의 트래픽에 대한 문제점을 해결책을 갖고있다. 스프링이 없는 DI의 경우 void pureContainer() { AppConfig appConfig = new AppConfig(); //1. 조회 : 호출할 때 마다 객체 생성 MemberService memberService1 = appConfig.memberService(); //2. 조회 : 호출할 때 마다 객체 생성 MemberService memberService2 = appConfig.memberService(); //참조값이 다른 것을 확인 System.out.println("memberService1 = " + membe..