Spring IoC 컨테이너 학습 도중 BeanFactory, ApplicationContext에 대해 알게 되어 이를 정리해 보고자 글을 작성하게 되었습니다. BeanFactory BeanFactory는 빈 컨테이너에 접근하기 위한 루트 인터페이스로 스프링에서 IoC 컨테이너의 가장 기본적인 형태이다. 스프링에서 관리되는 객체인 Bean들의 생성, 관리, 조회 등의 역할을 담당한다. 빈 객체들의 라이프사이클을 관리하며 싱글톤 객체들을 캐싱하여 동일한 객체들을 재사용한다. 빈 스코프에 따라 반환하는 빈들이 달라질 수 있다. 다양한 구현체를 가질 수 있는데 스프링에서는 XmlBeanFactory, DefaultListableBeanFactory 등의 구현체를 제공한다. XmlBeanFactory : XML..
스프링은 어노테이션을 기반으로 구성되어 있습니다. 어노테이션이란 무엇이고 스프링에서는 왜 어노테이션을 기반으로 구성하게 되었는지 정리해 보고자 글을 작성하게 되었습니다. 어노테이션 어노테이션은 사전적 의미로 주석이라는 뜻을 가지고 있다. 자바에서 어노테이션은 소스 코드에 추가해서 사용할 수 있는 메타 데이터의 일종이다. 메타 데이터란 애플리케이션이 처리해야 할 데이터가 아니라 컴파일 및 런타임 과정에서 코드를 어떻게 처리해야 할지 알려주기 위한 추가 정보이다. 자바 어노테이션은 JDK 1.5 버전 이상에서부터 사용가능하며, 자바 어노테이션은 클래스 파일에 임베드되어 컴파일러에 의해 생성된 이후 JVM에 포함되어 동작한다. 어노테이션이 나오기 이전에는 XML 및 마커 인터페이스를 통해 추가적인 정보를 제공..
@Controller의 반환값이 문자열로 뷰 이름을 반환하는 것이 아닌 다른 타입의 반환값을 가지게 된다면 어떻게 될까? 클라이언트 요청 및 응답 과정 클라이언트의 요청은 크게 아래와 같은 흐름으로 진행된다. 요청이 DispatcherServlet으로 들어온다. 요청 정보를 바탕으로 HandlerMapping을 통해 핸들러를 찾는다. 핸들러 정보를 바탕으로 HandlerAdapter를 통해 핸들러 어댑터를 찾는다. 핸들러 어댑터가 핸들러(컨트롤러)로 요청을 위임한다. 핸들러 메서드 실행 후 Model과 View를 반환한다. 뷰 이름을 ViewResolver에 전달하고 뷰 리졸버는 해당하는 뷰를 반환한다. 디스패처 서블릿은 뷰에게 모델을 전달하고 모델 데이터를 뷰에 렌더링 한다. 최종적인 뷰를 클라이언트 ..
Spring 프레임워크에서는 외부 API와 통신을 위해 RestTemplate을 구현해 두었습니다. RestTemplate이 무엇이고 어떤 동작을 수행하는지 정리해보고자 합니다. RestTemplate RestTemplate는 스프링 3.0부터 지원하는 HTTP 요청을 수행하는 동기식 클라이언트이다. HTTP 통신을 단순화하고 RESTful 원칙을 지킨 HTTP 메서드(GET, POST, DELETE, PUT)에 적합한 여러 메서드들을 제공하고 있기 때문에 HTTP 통신에 있어 유용하게 사용할 수 있다. RestTemplate는 Blocking과 동기 방식이라는 특징이 존재한다. Blocking과 동기, Non-blocking과 비동기를 같은 개념으로 헷갈리는 경우가 많다. 하지만 두 개념은 구분 짓는 ..
웹에 대해 학습하다 보면 어떤 규칙 위에서 클라이언트와 서버 사이 데이터 전달이 발생하게 된다는 것을 알게 됩니다. 서버에는 웹 서버와 웹 애플리케이션 서버가 존재하는데 각각은 무엇을 의미하고 어떤 차이점이 있는지 알아보기 위해 글을 작성하게 되었습니다. 웹 서버(Web Server) 웹 서버는 하드웨어 개념과 소프트웨어 개념으로 나눌 수 있다. 하드웨어: 웹 서버가 설치되어 있는 컴퓨터를 의미한다. 소프트웨어: 클라이언트로부터 요청을 받아들여 html, jpeg, css 등과 같은 정적인 콘텐츠를 반환하는 프로그램을 의미한다. 웹 서버의 기능 웹 서버는 HTTP 프로토콜을 기반으로 클라이언트 요청에 알맞은 동작을 수행하는데, 크게 2가지 기능을 수행한다. 클라이언트로부터 요청 데이터를 받아 처리하여 저..