AutoConfiguration 동작 원리를 설명해주세요.
백엔드와 관련된 질문이에요.
AutoConfiguration의 시작은 @SpringBootApplication 어노테이션 안에 있는@EnableAutoConfiguration 이라는 애노테이션입니다.
@EnableAutoConfiguration은 @Import(AutoConfigurationImportSelector.class)를 통해 자동 구성 클래스를 가져옵니다.
@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
@AutoConfigurationPackage
@Import({AutoConfigurationImportSelector.class})
public @interface EnableAutoConfiguration {
String ENABLED_OVERRIDE_PROPERTY = "spring.boot.enableautoconfiguration";
Class<?>[] exclude() default {};
String[] excludeName() default {};
}
자동 구성 클래스를 가져올 때는 AutoConfigurationImportSelector 클래스의 selectImports(AnnotationMetadata annotationMetadata) 라는 메서드를 이용하고, getAutoConfigurationEntry(AnnotationMetadata annotationMetadata); 메서드를 통해 Import할 클래스가 무엇인지 알 수 있게 됩니다.
- 간단한 메서드 동작 과정 설명
- getCandidateConfigurations(annotationMetadata, attributes); - AutoConfiguration의 후보들을 가져온다.
- removeDuplicates(configurations); - 중복을 제거한다.
- getExclusions(annotationMetadata, attributes); - 자동 설정에서 제외되는 설정에 대한 정보를 가져온다.
- configurations.removeAll(exclusions); - 제외되는 설정을 제거한다.
- getConfigurationClassFilter().filter(configurations); - 필터를 적용한다.
출처 : https://velog.io/@realsy/Spring-Boot-AutoConfiguration-%EB%8F%99%EC%9E%91-%EC%9B%90%EB%A6%AC
공유하기
컨텐츠 피드백