섹션 5 : 자동 구성(Auto Configuration)

최용석·2023년 12월 29일
post-thumbnail

스프링 부트가 제공하는 자동 구성(Auto Configuration)

  • 스프링 부트 프로젝트를 사용하면 'spring-boot-autoconfigure' 라이브러리가 기본적으로 사용된다.
  • 'spring-boot-autoconfigure' 라이브러리를 통하여 자동 구성 할 라이브러리들을 모아둔다.

자동 설정 - 빈들을 자동으로 등록해서 스프링이 동작하는 환경을 자동으로 설정
자동 구성 - 스프링 실행에 필요한 빈들을 자동으로 배치

외부 라이브러리를 사용할 때, 사용되는 빈들을 하나하나 등록하고, 초기 설정 등을 해야 한다. 이러한 부분을 자동으로 처리해주는 것이 바로 스프링 부트 자동 구성(Auto Configuration)이다.

@Conditional

특정 상황에서 특정 빈들만 사용하고 싶을 때 쓰는 기능

@ConditionalOnXxx

스프링은 @Conditional과 관련해서 개발자가 편리하게 사용할 수 있도록 수 많은 @ConditionalOnXxx를 제공한다.

  • @ConditionalOnClass , @ConditionalOnMissingClass
    • 클래스가 있는 경우 동작한다. 나머지는 그 반대
  • @ConditionalOnBean , @ConditionalOnMissingBean
    • 빈이 등록되어 있는 경우 동작한다. 나머지는 그 반대
  • @ConditionalOnProperty
    • 환경 정보가 있는 경우 동작한다.

자동 구성 이해

스프링 부트의 동작

스프링 부트는 다음 경로에 있는 파일을 읽어서 스프링 부트 자동 구성으로 사용한다.

resources/META-INF/spring/
org.springframework.boot.autoconfigure.AutoConfiguration.imports

설정 정보를 추가하는 방법(@Import)

  • 정적인 방법 - @Import (클래스), 설정으로 사용할 대상을 동적으로 변경할 수 없다.
  • 동적인 방법 - @Import ( ImportSelector ) 코드로 프로그래밍해서 설정으로 사용할 대상을 동적으로 선택할 수 있다.

스프링 부트 자동 구성이 동작하는 순서

@SpringBootApplication -> @EnableAutoConfiguration ->
@Import(AutoConfigurationImportSelector.class) ->

resources/META-INF/spring/
org.springframework.boot.autoconfigure.AutoConfiguration.imports 

파일을 열어서 설정 정보 선택 -> 해당 파일의 설정 정보가 스프링 컨테이너에 등록되고 사용

Tip

  • @AutoConfiguration 에 자동 구성의 순서를 지정할 수 있다.
  • @AutoConfiguration 도 설정 파일이다. 따라서 내부에 @Configuration 이 있는 것을 확인할 수 있다.
  • @AutoConfiguration 은 일반 스프링 설정과 라이프사이클이 다르기 때문에 컴포넌트 스캔의 대상이 되면 안되고, 파일에 지정해서 사용해야 한다.
profile
호기심이 많은 백엔드 개발자

0개의 댓글