인프런 커뮤니티 질문&답변

돈우님의 프로필 이미지
돈우

작성한 질문수

스프링 부트 - 핵심 원리와 활용

정리

autoconfiguration 관련 질문

해결된 질문

작성

·

262

1

[질문 내용]
  1. 강의 예제에서 스프링부트에서 DBConfig 클래스 생성해서 @Configuration을 달고 안에서 관련 빈들을 스프링컨테이너에 등록을 하니 기존 자동구성에 의해 등록되는 빈은 이미 개발자가 등록한 빈에 의해 따로 추가적으로 등록이 안되는 걸로 이해했습니다. 그러면 이러한 빈을 등록하는 순서가 추가적인 설정이 없다면 항상 개발자가 등록한 빈부터 등록하고 이후에 스프링 부트의 자동 구성에 의한 빈등록이 일어나는건가요??
 
  1. starter와 같은 라이브러리를 gradle에 사용해서 추가해주면 자동으로 수많은 빈들이 생성해서 스프링 컨테이너에 등록되는 걸로 이해했습니다. 해당 라이브러리 내에 있는 수많은 빈들 중에 사용을 원하지 않는 것들도 있을텐데, 그러한 것도 모두 등록이 되는건가요?? 아니면 사용을 안하는 빈들은 따로 등록이 되지 않는 기능들도 스프링 부트에 있나요??
감사합니다 !

답변 2

2

김영한님의 프로필 이미지
김영한
지식공유자

안녕하세요. 돈우님

1. 사실 개발자가 등록한 빈과 스프링 부트가 등록하는 빈은 같은 빈입니다. 따라서 사실은 우선순위가 없습니다. 오히려 둘다 등록하면서 충돌이 날 수 있겠지요.

(같은 타입의 빈은 여러게 등록할 수 있습니다. 대신 이 경우 조회할 때 빈의 이름으로 구분해야 합니다.)

여기서 핵심은 조건부 설정입니다.

스프링 부트가 빈을 등록할 때 조건부 설정을 통해서 개발자가 등록한 빈이 있으면 자신의 빈을 등록하지 않도록 설정하는 것이 핵심입니다.

이렇게 되면 개발자가 등록한 경우에는 스프링 부트가 등록하는 빈은 등록되지 않고, 결과적으로 개발자가 원하는 기능이 적용됩니다.

2. starter와 같은 라이브러리를 사용하면 많은 빈이 등록됩니다. 그런데 모두 등록되는 것은 아니고, 조건부 설정을 통해 보통 현재 필요한 빈들이 등록됩니다.

하지만 해당 라이브러리를 사용한다고 했다면 해당 라이브러리의 사용하는데 필요한 기능들은 대부분 등록이 되겠지요?

스프링 부트를 활용하는 라이브러리 중에서 스프링 설정을 통해서 본인의 기능을 추가로 사용할지 옵션을 제공하기도 합니다. 이 경우 주로 application.yml 같은 것을 통해서 설정하게 됩니다.

감사합니다.

0

안녕하세요, 인프런 AI 인턴입니다.

질문하신 내용은 스프링 부트의 자동 구성(AutoConfiguration)과 관련하여, 개발자가 직접 등록한 빈의 처리 순서와 스프링 부트가 제공하는 스타터 라이브러리를 통해 등록되는 빈들에 대한 관리 방법에 대해 궁금해하시는 것으로 보입니다.

이와 관련하여, 스프링 부트에서 AutoConfiguration으로 등록되는 빈의 동작 원리와 사용하지 않는 빈에 대한 처리 방법 등에 대해 설명하는 유사한 질문 및 답변이 있어 해당 정보를 공유드립니다.

  • “필터랑 인터셉터는 스프링부트에서 AutoConfiguration으로 등록되나요?”
    • 질문 링크에서는 스프링 부트의 자동 구성이 작동하는 원리에 대해 설명하고 있습니다.
    • 해당 링크를 통해 좀 더 자세한 정보를 얻고 이해를 돕는 내용을 학습하시길 바랍니다.

감사합니다.

돈우님의 프로필 이미지
돈우

작성한 질문수

질문하기