반응형
Notice
Recent Posts
Recent Comments
관리 메뉴

개키우는개발자 : )

자동 구성 정보 대체하기 본문

토비의 스프링 부트 - 이해와 원리/섹션8 - 조건부 자동 구성

자동 구성 정보 대체하기

DOGvelopers 2024. 10. 9. 21:19
반응형

요약 및 핵심 개념

스프링 부트의 자동 구성(Autoconfiguration)을 직접 정의하고 기존의 자동 구성을 대체하는 방법을 설명했습니다. 이를 통해 특정 기술과 관련된 커스텀 인프라스트럭처 빈을 등록하고, 이를 활용하여 기본 제공되는 구성 정보 대신 사용자 정의 빈을 우선 적용할 수 있는 방법을 배웠습니다.

핵심 내용

  1. 자동 구성의 원리:

    • 스프링 부트는 EnableAutoConfigurationImportSelector를 통해 자동 구성 클래스를 로딩하고, 각 클래스에 있는 @Conditional 애노테이션을 사용하여 빈 등록 여부를 결정합니다.
    • 사용자는 ConditionalOnClass, ConditionalOnMissingBean과 같은 조건부 애노테이션을 통해 자동 구성 정보의 적용 여부를 세밀하게 제어할 수 있습니다.
  2. 커스텀 구성 정보의 우선순위:

    • 사용자 정의 구성 정보는 자동 구성 정보보다 우선합니다. 즉, 유저 구성 정보로 등록된 빈이 존재하는 경우 자동 구성 빈은 무시됩니다.
    • 이를 통해 자동 구성의 일부만 변경하거나 확장할 수 있으며, 기존 설정을 완전히 대체할 수도 있습니다.
  3. ConditionalOnMissingBean 사용:

    • ConditionalOnMissingBean 애노테이션을 사용하여, 동일한 타입의 빈이 이미 등록되어 있지 않은 경우에만 새로운 빈을 등록할 수 있도록 제어할 수 있습니다.
    • 이 패턴을 통해 기본 자동 구성 빈을 확장하거나 대체할 수 있습니다.
  4. 커스텀 서블릿 컨테이너 등록:

    • 강의에서는 TomcatServletWebServerFactory를 커스터마이징한 예제를 통해, 포트를 변경하는 등 서블릿 컨테이너 설정을 사용자 정의 빈으로 대체하는 방법을 설명했습니다.
    • 사용자 구성 정보의 커스텀 빈이 우선적으로 적용되어, 자동 구성 정보에 포함된 Tomcat 빈 대신 사용자 정의 설정이 적용됩니다.
  5. 자동 구성과 사용자 정의 구성 간의 충돌:

    • 사용자 정의 빈이 자동 구성의 빈을 대체할 때, 해당 빈의 의존성이 제대로 처리되지 않으면 애플리케이션 구동 시 문제가 발생할 수 있습니다.
    • 따라서, 자동 구성 정보를 어느 정도 이해하고, 어떤 빈이 등록되는지를 파악하는 것이 중요합니다.

결론

스프링 부트의 자동 구성 원리와 커스텀 구성 정보의 우선 적용 방법을 학습했습니다. ConditionalOnMissingBean 애노테이션을 사용하여 사용자 정의 빈을 자동 구성보다 우선 적용하고, 이를 통해 기존의 자동 구성을 확장하거나 대체하는 방법을 배웠습니다. 다음 강의에서는 자동 구성 정보의 세부 구현과 다양한 조건부 애노테이션을 다룰 예정입니다.

반응형
Comments