스프링 MVC 1편 - 섹션 1~3
·
Spring
WAS와 Web ServerWeb ServerWeb Server는 웹 브라우저(클라이언트)로부터 HTTP 요청을 받아 HTML 문서와 같은 정적 컨텐츠를 제공하는 프로그램을 말한다.정적 컨텐츠란, 요청 인자 값에 상관없이 달라지지 않는 컨텐츠(html, css, image 등) 즉, 어느 사용자의 요청이든 항상 동일한 컨텐츠를 일컫는다. 대표적인 Web Server로는 Apache와 Nginx가 있다. 하지만 클라이언트로부터 동적 컨텐츠를 보여주어야 한다면 어떨까? 이때, 필요한 것이 바로 WAS다.WASWAS는 Web Application Server의 약자로 DB 조회나 다양한 로직 처리를 요구하는 동적인 컨텐츠를 제공하기 위해 만들어진 프로그램이다. 동적 컨텐츠란, 정적 컨텐츠와 반대로 요청 인자에..
스프링 핵심 원리 기본편 - 섹션 9~10
·
Spring
빈 생명주기 콜백스프링 빈은 다음과 같은 라이프 사이클을 가진다.스프링 컨테이너 생성 → 스프링 빈 생성 → 의존관계 주입 → 초기화 콜백 → 사용 → 소멸 전 콜백 → 스프링 종료 스프링 빈은 객체를 생성하고, 의존관계 주입이 모두 끝난 후에야 필요한 데이터를 사용할 수 있는 준비가 완료된다. 때문에 초기화 작업은 의존관계 주입이 모두 완료된 후에 호출되어야 한다. 이를 위해 스프링은 의존관계 주입이 완료되면 스프링 빈에게 콜백 메서드를 통해서 초기화 시점을 알려주는 기능을 제공한다. 또한 소멸 콜백도 제공한다. 싱글톤 빈들의 경우, 스프링 컨테이너가 종료될 때, 싱글톤 빈들도 함께 종료되기 때문에 스프링 컨테이너가 종료되기 직전에 소멸 전 콜백이 일어난다.객체의 생성과 초기화를 분리하자! 생성자 안에..
스프링 핵심 원리 기본편 - 섹션 7~8
·
Spring
컴포넌트 스캔지금까지 살펴본 방법은 @Bean 을 통해서 설정 정보에 직접 등록할 스프링 빈을 나열했다. 이는 개발자 입장에서 매우 귀찮은 작업이다. 때문에 스프링은 설정 정보가 없어도 자동으로 스프링 빈을 등록하는 컴포넌트 스캔이라는 기능을 제공한다.컴포넌트 스캔컴포넌트 스캔을 사용하려면 @ComponentScan 애노테이션을 설정 정보에 붙여주면 된다.@Configuration@ComponentScanpublic class AutoAppConfig {}기존 설정 정보와 다르게 @Bean 을 통해 직접 등록한 스프링 빈이 하나도 없어도, 컴포넌트 스캔을 통해 @Component 애노테이션이 붙은 클래스를 스캔해서 자동으로 스프링 빈으로 등록한다. 이때, basePackages라는 속성을 통해 탐색할 패..
스프링 핵심 원리 기본편 - 섹션 4~6
·
Spring
제어의 역전과 의존관계 주입IoC (Inversion of Control)스프링과 같은 프레임워크를 사용할 때를 생각해보자. Controller, Service 같은 객체들의 동작을 우리가 직접 구현하기는 하지만, 해당 객체들이 어느 시점에 호출될 지는 신경쓰지 않는다. 단지 프레임워크가 요구하는대로 객체를 생성하면, 프레임워크가 해당 객체들을 가져다가 생성하고, 메서드를 호출하고, 소멸시킨다. 프로그램의 제어권이 역전된 것이다. 즉, 어플리케이션 코드에 작성한 객체들을 프레임워크가 필요한 시점에 가져다가 프로그램을 구동하기 때문에 프로그램의 제어권이 프레임워크로 역전된다. 이처럼, 프로그램의 제어 흐름을 직접 제어하는 것이 아니라 외부에서 관리하는 것을 제어의 역전(IoC)라 한다.DI (Depende..