Using CustomAutowireConfigure

2024. 11. 14. 19:51Spring Framework/Spring IoC

 CustomAutowireConfigurerBeanFactoryPostProcessor로, Spring의 @Qualifier 애노테이션이 없어도 사용자 정의 qualifier 애노테이션 타입을 등록할 수 있도록 합니다.

import org.springframework.beans.factory.annotation.CustomAutowireConfigurer;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import java.util.Collections;

@Configuration
public class AppConfig {

    @Bean
    public CustomAutowireConfigurer customAutowireConfigurer() {
        CustomAutowireConfigurer configurer = new CustomAutowireConfigurer();

        // 사용자 정의 자격 애노테이션 등록
        configurer.setCustomQualifierTypes(Collections.singleton(example.CustomQualifier.class));

        return configurer;
    }
}

설명

  • CustomAutowireConfigurer 빈 등록: customAutowireConfigurer() 메서드는 CustomAutowireConfigurer 빈을 생성하고, Spring 컨테이너에 등록합니다.
  • setCustomQualifierTypes 메서드 사용: setCustomQualifierTypes 메서드는 example.CustomQualifier와 같은 사용자 정의 qualifier 애노테이션을 설정합니다. Collections.singleton을 통해 CustomQualifier 클래스를 하나의 요소로 가지는 세트를 생성하고 이를 전달합니다.

AutowireCandidateResolver 작동 방식

AutowireCandidateResolver는 자동 주입 후보를 다음 기준에 따라 결정합니다.

  1. 각 빈 정의의 autowire-candidate 속성: 특정 빈이 자동 주입 후보인지 여부를 설정할 수 있습니다.
  2. 디폴트 자동 주입 후보 패턴: <beans/> 엘리먼트에서 설정할 수 있는 디폴트 자동 주입 후보 패턴이 있을 경우 이를 사용합니다.
  3. @Qualifier 애노테이션 및 CustomAutowireConfigurer로 등록된 애노테이션: @Qualifier와 등록된 사용자 정의 자격 애노테이션을 확인하여 자동 주입 후보를 결정합니다.

자동 주입 후보가 여러 개인 경우

자동 주입 후보가 여러 개인 경우 primary 속성이 true로 설정된 빈이 하나뿐이라면 해당 빈이 선택됩니다.

'Spring Framework > Spring IoC' 카테고리의 다른 글

Using @Value  (0) 2024.11.14
Injection with @Resource  (0) 2024.11.14
Using Generics as Autowiring Qualifiers  (0) 2024.11.14
Using JSR 330 Standard Annotations  (0) 2024.11.14
Container Extension Points  (3) 2024.11.14