전체 글(63)
-
[Java] JVM과 구성 요소
JVM이란? 자바를 실행시키기 위한 가상 머신. java는 JVM을 거쳐 OS에 도달하므로 OS에 종속적이지 않다. => .java 파일은 컴퓨터가 인식하지 못하므로 컴파일을 해줘야한다. 이 때 JVM이 인식할 수 있는 .class 파일(byte code)로 변환해주고, JVM이 byte code를 OS가 인식할 수 있도록 도와준 다. JVM 구성 요소 클래스 로더(Class Loader) 실행 엔진(Execution Engine) 인터프리터(Interpreter) JIT 컴파일러(Just-in-Time) 가비지 콜렉터(Garbage collector) 런타임 데이터 영역 (Runtime Data Area) 1) 클래스 로더 - 런타임 시점에 JVM 내로 .class 파일을 메모리에 올리는 역할을 담당하..
2022.11.08 -
Servlet
Servlet 해당 내용은 김영한님의 인프런_[Spring_MVC1편]을 참고하였습니다. 웹 브라우저가 서버로 요청을 보낼 때 WAS에게 HTTP 요청을 위임한다고 했다. 웹 브라우저는 HTTP 요청 메세지를 생성해서 서버로 보내게 되는데이런 이 요청 메세지는 단순히 그냥 텍스트이다. 이런 메세지에 대한 정보를 우리는 직접 파싱해서 사용하지 않고 어떤 객체에서 값을 가져다 썼다. 이렇게 HTTP 메세지를 편히 쓸 수 있었던것은 누구덕분일까? 서블릿이란? 웹페이지를 동적으로 생성하는 서버측 프로그램을 말하며 클라이언트로부터 들어오는 HTTP요청을 받고 HTTP응답을 반환하는 역할을 한다. HttpServlet 클래스를 사용해 서블릿을 사용할 수 있으며 HTTP 요청 정보를 편리하게 사용할 수 있는 Http..
2022.10.28 -
HTTP 메세지 컨버터
인프런 김영한님의 강의 [스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술] 참고 HTTP의 BODY에 문자 내용을 직접 반환 viewReslver 대신에 HttpMessageConverter 가 동작 여러 타입에 대한 각각의 메세지 컨버터가 기본으로 등록되어 있음 스프링 부트 기본 메세지 컨버터 (일부) 0 = ByteArrayHttpMessageConverter (byte[] 데이터를 처리) 1 = StringHttpMessageConverter (String 문자로 데이터를 처리) 2 = MappingJackson2HttpMessageConverter 대상 클래스 타입과 미디어 타입(content-type)* 두가지를 체크해서 결정. 우선순위대로 돌아가면서 걸정한다. 클래스 타입미디어 타입 Byte..
2022.10.28 -
프록시
프록시(proxy)는 대리인이라는 사전적 의미를 가지고 있다. 스프링에서 프록시는 CGLIB라는 라이브러리를 사용해 해당 클래스를 상속받은 새로운 인스턴스를(가짜 프록시 객체) 만들어내고 이 인스턴스가 클라이언트의 요청을 대신 받는 역할을 한다. CGLIB라는 라이브러리로 해당 클래스를 상속 받은 가짜 프록시 객체를 만들어서 주입한다. 객체를 만들 때 @Scope 어노테이션을 사용해 프록시 객체를 만들 수 있다. 클래스가 아닌 인터페이스라면 ScopedProxyMode.INTERFACE를 사용한다. 프록시 객체는 요청이 오면 그 때 내부에서 진짜 빈을 요청하는 로직이 들어있다. 프록시 객체는 원본 클래스를 상속 받아서 만들어졌기 때문에 이 객체를 사용하는 클라이언트 입장에서는 동일하게 사용되어진다. 프록..
2022.10.28 -
빈 스코프
해당 내용은 김영한님의 인프런_[스프링 핵심 원리]를 바탕으로합니다. Scope 의 사전적 의미는 범위이다. 그리고 스프링 컨테이너는 빈의 생성부터 소멸까지 생명주기를 관리해주는 역할을 한다. 빈 스코프는 말 그대로 스프링 빈이 컨테이너에서 존재할 수 있는 범위를 뜻한다. 스프링은 여러 스코프를 지원한다. singleton 컨테이너 내에 하나의 빈 정의로 하나의 인스턴스를 보장한다. prototpye 하나의 빈 정의로 여러개의 인스턴스를 생성할 수 있다. request 각각의 HTTP 요청에 각각의 인스턴스를 가진다. session HTTP 웹 세션에 대해 단 하나의 인스턴스를 가진다. application 웹의 서블릿 컨텍스트와 같은 범위로 스코프를 가진다. 싱글톤 빈 스프링에서 기본이 싱글톤 스코프다..
2022.10.28 -
빈 생명주기 콜백
해당 내용은 김영한님의_인프런 [스프링 핵심 원리]를 바탕으로 합니다. 객체 생성과 동시에 미리 초기화 작업을 해야할 때가 있다. 예를 들어 디비 커넥션 풀의 경우, 접근마다 커넥션을 연결하고 끊는 것보다는 미리 객체를 만들어놓고 연결을 해놓는 작업이 성능과 속도면에서 좋다. 또한 계속 연결을 가지고 있지않고 연결을 종료해주어야한다. 네트워크 소켓도 마찬가지다. 애플리케이션 시작 시점에 필요한 연결을 미리 해두고 종료 시점에 연결을 종료하는 작업을 진행하려면 객체의 생성 뿐만 아니라 초기화와 종료작업이 필요하다. Bean LifeCycle 스프링 빈은 스프링 컨테이너 생성 -> 스프링 빈 생성 -> 의존관계 주입 -> 초기화 콜백 -> 사용 -> 소멸전 콜백 -> 스프링 종료 과정의 라이프사이클을 가진다..
2022.10.28