컴포넌트 스캔(Component Scan) 컴포넌트 스캔이란 스프링이 스프링 빈(Bean)으로 등록될 준비가 된 클래스들을 스캔하여 빈(Bean)으로 등록해주는 과정을 말한다. @Component 어노테이션이 붙어있는 클래스들은 전부 컴포넌트 스캔의 대상이 된다. @Configuration, @Service, @Repository, @Controller, 등의 어노테이션에도 전부 @Component이 포함되어 있어 자동으로 컴포넌트 스캔의 대상이 된다. @ComponentScan과 컴포넌트 스캔 범위 컴포넌트 스캔을 사용하기 위해서는 설정 정보 클래스에 @ComponentScan 어노테이션을 붙여줘야 한다. 이때 컴포넌트 스캔의 범위는 설정 정보 클래스의 패키지를 포함한 모든 하위 패키지가 된다. 이때 ..
싱글톤 패턴이란? 만약 스프링이 없는 순수한 DI 컨테이너 Appconfig에 고객들이 요청을 보낸다고 하자. DI 컨테이너는 요청을 받을 때마다 객체를 새로 생성할 것이다. 따라서 고객 트래픽이 초당 100건이 나오면 초당 100개의 객체가 생성되고 소멸된다. 이는 메모리 낭비가 매우 심하다. 해결 방안으로는 객체를 딱 1개만 생성하고 이를 공유하도록 설계하면 된다. 이것이 바로 싱글톤 패턴이다. 즉, 싱글톤 패턴이란 클래스의 인스턴스가 딱 1개만 생성되는 것을 보장하는 디자인 패턴이다. 따라서 객체 인스턴스를 2개 이상 생성하지 못하도록 막아야 한다. public class SingletonService { //1. static 영역에 객체를 딱 1개만 생성해둔다. private static fina..
IoC(Inversion of Control)란? IoC는 제어의 역전이라는 뜻으로 프로그램의 제어 흐름을 직접 제어하는 것이 아니라 외부에서 관리하는 것을 말한다. 이전에는 개발자가 객체를 생성하고 관리하며 프로그램의 제어 흐름을 스스로 조종했다. 하지만 Spring을 사용하면 스프링 컨테이너가 프로그램의 제어흐름을 제어하게 된다. DI(Dependency Injection)란? DI는 의존관계 주입이라는 뜻으로 여기서 의존관계(Dependency)는 어떠한 객체와 같이 수행(work with)되는 다른 객체와의 관계를 뜻한다. 더 자세한 내용은 다음을 참고 하자. [Spring] 의존관계 주입(Dependency Injection : DI)이란? 의존관계(Dependency)란? 의존관계 주입(Dep..
의존관계(Dependency)란? 의존관계 주입(Dependency Injection)에 대하여 알아보기 전에 의존관계가 무엇인지 알아야 한다. 의존관계는 의존 대상 B가 변하면, 그것이 A에 영향을 미칠 때 A는 B와 의존관계라고 한다. 쉽게 말해 B가 변경되었을 때 그 영향이 A에 미치는 관계를 말한다. 예를 들어 다음과 같은 상황을 가정해보자. 피자 가게의 요리사는 피자 레시피에 의존한다. 만약 피자 레시피가 변경된다면, 요리사는 피자를 새로운 방법으로 만들게 된다. 레시피의 변화가 요리사에 미쳤기 때문에 요리사는 레시피에 의존한다라고 할 수 있다. 이를 코드로 나타내면 다음과 같다. public class PizzaChef{ private PizzaRecipe pizzaRecipe; public ..