[Spring Boot] annotation 정리

이용구·2023년 10월 17일

스프링 공부를 하며 알게 된 annotation

간단한 정리를 통해 개념을 정리하자.


@Configuration

설정 class에 붙여준다.
@Bean을 사용하여 빈을 등록한다.
빈 생성 시 싱클톤 보장.


@Component

@ComponentScan 애노테이션을 설정 정보에 붙여주면
@Component 붙은 클래스를 스캔하여 스프링 빈으로 등록한다

  • 스캔대상 애노테이션

    @Component
    @Controller
    @Service
    @Repository
    @Configuration

  • 충돌

    그럼 @Configuration 과 @ComponentScan을 동시에 사용하여 충돌하면 어떻게 될까?
    이러한 경우 수동 빈 등록이 우선이다.

  • 의존성 주입

    @Configuration은 클래스에 직접 붙이고,
    @Bean을 사용하여 설정 정보와 의존관계를 직접 명시하였다.

    하지만 @Component에서는 설정 정보가 없기 때문에 의존관계 주입이 필요하다.
    여기서 @Autowired를 사용하여 생성자에서 여러 의존관계를 한 번에 주입시켜준다.


  • 의존관계 주입 4가지 방법

    @Autowired를 붙여
  1. 생성자 주입 - 생성자에 의존관계를 주입한다
  2. 수정자 주입 (setter) - setter(수정자 메서드)를 통해 의존관계 주입
  3. 필드 주입 - 필드에 바로 @Autowired를 붙여 의존관계를 주입한다.
  4. 일반 메서드 주입 - 일반 메서드를 통해 주입한다.

  • @Autowired을 사용하여 조회할 때 빈이 2개 이상인 경우

    @Autowired는 type으로 조회한다.
    만일 하위 타입이 두 개가 있고, 빈으로 동록된 경우에 오류가 발생한다.
  1. @Qualifier - 이름 매칭
    빈 등록 시(@Component) @Qualifier("빈 이름")을 붙여준다.
    의존관계 주입 시(@AutoWired) @Qualifier("빈 이름")을 붙여준다.

  2. @Primary - 우선순위 사용
    빈 등록 시(@Component) @Primary을 붙여주어 우선순위를 준다.

profile
베짱이는 개미가 밉다

0개의 댓글