AutoConfiguration의 동작방식
스프링부트 애플리케이션 구성 정보 작성방식 2가지
사용자 구성정보 ( ComponentScan )
- 애플리케이션의 로직을 담당하는 빈들을 등록
- ComponentScan에 의해서 등록됨
- 일정 패키지 밑으로 빈 클래스들을 몰아 넣는 것
자동 구성정보 ( AutoConfiguration )
- 기술과 관련된 빈들을 자동 구성 동작 방식에의해 자동으로 등록
자동 구성정보 동작 방식
MyAutoConfiguration.imports
- 스프링 부트 MyAutoConfiguration이라는 애터네이션 이름과 일치하는 imports라는 파일에 빈 등록 정보로 등록할 후보가 되는 Configuration 파일의 목록이 들어있음
- 이 파일에 있는 모든 Configuration 클래스들을 전부 찾아와서 후보로 선정
- 각 Configuration 클래스에 달린 @Conditional 애너테이션에 의해서 빈을 등록할 것인지 아닌지 결정
- Conditional은 Spring Framework에 있는 기능이며 이를 결정하는 것은 Spring Container가 결정
- ConditionalMyOnClass 커스텀 애너테이션에 의해서 어떤 클래스가 존재하는지에 따라서 Configuration 클래스를 등록이 되는 것
MyOnClassCondition
- ConditionalMyOnClass에서는 MyOnClassCondition이라는 Condition 클래스를 이용해서 지정한 클래스가 존재하는지 확인