본문 바로가기
스프링 부트

[스프링] 빈 등록 Bean, Configuraition, Component 비교

by illlilillil 2022. 4. 6.

Bean이란?

IOC 컨테이너에 의해 관리되는 객체를 말한다. 스프링 DI 컨테이너에 의해 관리되는 POJO를 빈이라고 부른다. 스프링은 이를 싱글톤 객체로 생성하고 관리한다.

빈 등록 방법


  1. @Bean - 수동
  2. @Configuration - 수동
  3. @Component - 자동

[수동 등록] Bean, Configuration

설정 클래스에 Configuration을 붙이고 그 안에 Bean 어노테이션으로 스프링 컨테이너에 빈을 생성한다.

개발자가 제어 불가능한 라이브러리를 쓸 때

전범위로 사용되는 클래스를 등록할때

다형성으로 여러 구현체를 등록할때 사용한다.

[자동 등록] Component


스프링이 직접 클래스를 검색해 빈으로 등록해주는 기능이다.

@Component를 가진 모든 대상을 가져와 빈에 등록한다.

빈에 등록되는 이름은 가장 앞 문자를 소문자로 바꾸는 것이다.

예를 들어 RedisConfig가 있다면 → redisConfig로 빈이 등록된다.

기본 컴포넌트 스캔 대상


@Component

@Controller

@Service

@Repository

@Configuration

컴포넌트 스캔 범위


@ComponentScan이 있는 파일의 패키지 아래를 기본적으로 찾는다.

SpringBoot는 main에 @SpringBootApplication에 포함되어 있다.

주의할 점

같은 인터페이스를 상속받는 클래스가 두 가지 있을때 사용할 클래스만 빈에 등록한다.

차선책으로는 @Qulifier나 @Primary를 사용해야 한다.

Bean, Configuration 과 Compent의 차이


Bean, Configuration

  • 수동 빈 등록 방법
  • 외부 라이브러리를 등록할때 사용
  • @Configuration을 명시해야 싱글톤 보장한다.

Component

  • 자동 빈 등록 방법
  • 어노테이션이 있는 클래스를 찾아 등록한다.

 

참고 자료

 

[Spring] 빈 등록을 위한 어노테이션 @Bean, @Configuration, @Component 차이 및 비교 - (1/2)

기존의 Spring MVC에서는 xml을 활용하여 Bean을 등록하고 있었다. 하지만 프로젝트의 규모가 커짐에 따라 사용하는 요소들을 xml에 등록하는 것이 상당히 번거로워 져서 어노테이션(Annotation, @)를 활

mangkyu.tistory.com

 

댓글