inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

정리

Config 클래스에 @AutoConfiguration 의 필요성

132

우으어으

작성한 질문수 24

0

 학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.


1. 강의 내용과 관련된 질문을 남겨주세요.
2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.
(자주 하는 질문 링크: https://bit.ly/3fX6ygx)
3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.
(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)

질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.
=========================================
[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? (예/아니오)
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)
3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)

[질문 내용]
안녕하세요 org.springframework.boot.autoconfigure.AutoConfiguration.imports에 설정 클래스를 등록하면
importSelector가 해당 클래스를 읽어온 후 설정 클래스 및 내부 빈들이 등록되는 것으로 이해했습니다. 그런데 설정 클래스에서 @AutoCongiruation 이라는 어노테이션을 붙여주는 이유가 뭔지 잘 모르겠습니다.

해당 어노테이션을 제외하고
public class MemoryAutoConfig { @Bean public MemoryController memoryController() { return new MemoryController(memoryFinder()); } @Bean public MemoryFinder memoryFinder() { return new MemoryFinder(); } }
이런형태로 build한뒤 다른 프로젝트에서 implementation 을했을 때도 MemoryController와 MemoryFinder가 빈으로 등록되고 동작하는 것을 확인했습니다. imports파일에 등록하는 클래스는 자동으로 빈으로 읽혀지는 것 같은데, 해당 클래스에 @AutoConfiguration 을 붙여주는 이유가 궁금합니다

spring spring-boot prometheus grafana

답변 1

0

인프런 AI 인턴

안녕하세요, 인프런 AI 인턴입니다.
한봉훈님, 질문 주셔서 감사합니다.

Spring Boot에서 @AutoConfiguration 어노테이션은 자동 구성을 위한 설정 클래스에 붙여서 사용됩니다. 이 어노테이션의 목적은 해당 설정 클래스가 자동 구성을 지원할 수 있도록 하는 것입니다. 여기서 중요한 점은 @AutoConfiguration@Configuration과 함께 사용되며, 추가적인 @Conditional 어노테이션이 함께 설정될 수 있다는 점입니다. 이런 방법으로 특정 조건 하에서만 자동 구성이 적용되도록 할 수 있습니다.

예를 들어, 흔히 사용되는 @ConditionalOnClass@ConditionalOnMissingBean 같이 조건부 어노테이션을 사용하여 설치된 라이브러리나 빈이 이미 존재하는 경우에만 해당 설정을 적용하도록 제한할 수 있습니다. 따라서 @AutoConfiguration을 사용하는 이유는 단순히 빈 등록뿐만 아니라, 이러한 조건부 로직을 통해 다양한 환경에서 적절히 자동 구성을 적용하기 위함입니다.

또한, @AutoConfiguration을 사용하지 않더라도 기본 설정 클래스가 빈으로 등록될 수 있지만, 이 경우 위와 같은 조건부 적용 로직을 수동으로 추가해야 할 수 있습니다.

보다 자세한 내용은 Spring Boot의 Spring Boot 레퍼런스 문서를 참고하시면 도움이 될 것입니다.

추가적으로 궁금한 점이 있다면 언제든지 질문해 주세요!

보안이 엄격한 데이터

0

79

1

MyProperties 자체를 클라이언트 코드에서 사용

1

53

1

http://localhost:8080/actuator/prometheus

0

92

3

jar 추가에대한 질문드려도될까요?

0

74

1

build.gradle bom link 변경

0

71

2

@Counted 초기화

0

51

1

@Validated를 적용해도 빈 검증이 안되는 경우에 대한 조치 공유..

0

105

2

springboot에서 actuator없이 micrometer를 사용할수 있나요?

0

68

1

@Configuration 질문드립니다.

0

88

2

[공유] 터미널 말고 IDE 에서 jar 실행하기

0

106

1

localhost:8080/hello-servlet 404오류

0

125

2

내장톰캣2 서블릿 톰켓 실행이 안됩니다

1

156

2

최대 Tomcat 스레드 수를 확인하는 지표

0

163

1

mac m2에서 startup.sh 실행후 아무 반응이 없습니다.

0

96

2

내장 톰캣 실행 오류 관련 질문드립니다.

0

165

1

스프링 발전 과정들도 자세히 알아둬야하나요??

1

132

1

스프링부트 ioc 컨테이너 갯수

0

91

1

404 페이지

0

135

3

actuator 호출시 타임스탬프 질문

0

91

1

순수 라이브러리 사용하기 2 - memory-v1

0

129

1

외부설정 @ConfigurationProperties의 내부 클래스에서 static을 사용하는 이유를 알고 싶습니다.

0

106

1

서블릿 컨테이너 초기화1 강의 관련 질문입니다~

0

95

1

Thread Config Max 패널 설정 변경 질문

0

130

1

스프링 액츄에이터 shutdown 엔드포인트 활성화가 안됩니다.

0

112

1