제리의 배움 기록
[스프링] Spring Boot - AutoConfiguration 본문
Auto Configuration?
Spring Boot의 "auto configuration"은 프로젝트 클래스 패스에 위치한 의존 관계에 있는 jar들의 기본 설정과 빈 생성을 자동으로 도와줍니다.
auto configuration을 활성화 하기 위해서는 @EnableAutoConfiguration
혹은 @SpringBootApplication
어노테이션을 사용합니다.
@SpringBootApplication 어노테이션은 @EnableAutoConfiguration을 포함하고 있습니다.
Spring.factories
Spring Boot는 Spring으로 개발 시에 자주 사용하는 라이브러리들을 편리하게 사용하기 위해 자동설정 파일을 만들어 놓았습니다.
Spring Boot(Spring Boot 2.5.5 기준)의 의존 라이브러리 중 spring-boot-autoconfigure-2.5.5.jar
의 spring.factories
파일을 열어 보시면 다음과 같은 설정을 확인하실수 있는데,
# Auto Configure
org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
org.springframework.boot.autoconfigure.admin.SpringApplicationAdminJmxAutoConfiguration,\
org.springframework.boot.autoconfigure.aop.AopAutoConfiguration,\
org.springframework.boot.autoconfigure.amqp.RabbitAutoConfiguration,\
org.springframework.boot.autoconfigure.batch.BatchAutoConfiguration,\
org.springframework.boot.autoconfigure.cache.CacheAutoConfiguration,\
org.springframework.boot.autoconfigure.cassandra.CassandraAutoConfiguration,\
org.springframework.boot.autoconfigure.context.ConfigurationPropertiesAutoConfiguration,\
org.springframework.boot.autoconfigure.context.LifecycleAutoConfiguration,\
org.springframework.boot.autoconfigure.context.MessageSourceAutoConfiguration,\
org.springframework.boot.autoconfigure.context.PropertyPlaceholderAutoConfiguration,\
org.springframework.boot.autoconfigure.couchbase.CouchbaseAutoConfiguration,\
org.springframework.boot.autoconfigure.dao.PersistenceExceptionTranslationAutoConfiguration,\
...
각각의 의존 라이브러리에 대한 설정파일을 나타냅니다.
위 설정들은 @EnableAutoConfiguration이 true로 활성화할때 동작합니다.
클래스 패스에 존재하는 라이브러리인 경우 자동설정 정보에 따라 관련 빈들을 초기화하고 스프링 컨테이너에 빈을 등록해줍니다.
@Configuration 어노테이션을 이용하면 Spring Boot에서 미리 정해놓은 설정 외에 직접 설정파일을 만들어서 AutoConfiguration과 연동할 수도 있습니다.
@Conditional
Spring 4에서는 @Conditional을 도입하였습니다.
@Conditional은 특정 조건에 따라 bean의 생성을 다르게 컨트롤 할 수 있어 보다 유연하게 bean을 생성 합니다.
Conditional 종류
- 클래스 패스에 특정 클래스가 있는지 체크
- ApplicationContext에 생성되지 않은 bean인지 체크
- 특정 위치에 특정 파일이 없는지 체크
- 설정파일에 특정 property 값이 있는지 체크
- 특정 시스템 property가 있는지 체크
[참고]
dzone - How Spring Boot Auto-Configuration Works
'자바' 카테고리의 다른 글
[Java] 의도적 Exception 호출의 처리 비용 (0) | 2021.11.12 |
---|---|
[테스트] PBT(Property Based Testing) (0) | 2021.11.12 |
[Java] 의존 라이브러리의 버전 관리를 편리하게 할 순 없을까? (0) | 2021.11.12 |
[Java] Build Tools - Ant, Maven 그리고 Gradle (0) | 2021.11.12 |
[Java] 다형성(Polymorphism) (0) | 2021.11.12 |