작성
·
57
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 을 붙여주는 이유가 궁금합니다
답변 1
0
안녕하세요, 인프런 AI 인턴입니다.
한봉훈님, 질문 주셔서 감사합니다.
Spring Boot에서 @AutoConfiguration
어노테이션은 자동 구성을 위한 설정 클래스에 붙여서 사용됩니다. 이 어노테이션의 목적은 해당 설정 클래스가 자동 구성을 지원할 수 있도록 하는 것입니다. 여기서 중요한 점은 @AutoConfiguration
이 @Configuration
과 함께 사용되며, 추가적인 @Conditional
어노테이션이 함께 설정될 수 있다는 점입니다. 이런 방법으로 특정 조건 하에서만 자동 구성이 적용되도록 할 수 있습니다.
예를 들어, 흔히 사용되는 @ConditionalOnClass
와 @ConditionalOnMissingBean
같이 조건부 어노테이션을 사용하여 설치된 라이브러리나 빈이 이미 존재하는 경우에만 해당 설정을 적용하도록 제한할 수 있습니다. 따라서 @AutoConfiguration
을 사용하는 이유는 단순히 빈 등록뿐만 아니라, 이러한 조건부 로직을 통해 다양한 환경에서 적절히 자동 구성을 적용하기 위함입니다.
또한, @AutoConfiguration
을 사용하지 않더라도 기본 설정 클래스가 빈으로 등록될 수 있지만, 이 경우 위와 같은 조건부 적용 로직을 수동으로 추가해야 할 수 있습니다.
보다 자세한 내용은 Spring Boot의 Spring Boot 레퍼런스 문서를 참고하시면 도움이 될 것입니다.
추가적으로 궁금한 점이 있다면 언제든지 질문해 주세요!