강의

멘토링

커뮤니티

Cộng đồng Hỏi & Đáp của Inflearn

Hình ảnh hồ sơ của jusungpark
jusungpark

câu hỏi đã được viết

Spring Boot - Nguyên lý cốt lõi và ứng dụng

Sử dụng thư viện cấu hình tự động 2

자동구성 관련 질문드립니다.

Viết

·

388

·

Đã chỉnh sửa

1

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

[질문 내용]
안녕하세요 영한님.

말씀해주신 자동 구성 라이브러리가 잘동작하는것 확인하였습니다.

@Configuration 설정 항목들을 @AutoConfiguration 항목들로 구성하는 방법을 이해하고 문득 궁금한게 생겼는데요.

내부에 @Service 관련이나 @Repository (JPA) 관련 컴포넌트들이있다면 이러한 여러 다른 컴포넌트들을 자동구성할수 있는 방법이 있을까요?

@Import 로 전체 서비스를 일일히 해주는건 비효율적으로 보이는데 섹션 5.자동구성 정리의 8:43 초 부분에서 내부에서 @ComponentScan 을 사용하면 안되는 이유에 대해서 의견주시면 감사하겠습니다.

springspring-bootprometheusgrafana

Câu trả lời 2

2

yh님의 프로필 이미지
yh
Người chia sẻ kiến thức

안녕하세요. 램쥐뱅님

여기서 이야기 하는 것은 전체 서비스를 이야기하는 것이 아니라 라이브러리 내부에서 자동으로 등록해야 하는 클래스들에 대한 것입니다.

이것들은 강의에서 설명드린 것 처럼 @Import, @Bean @Conditional 등을 활용하셔야 합니다.

참고로 전체 서비스에서 내가 등록해야 하는 것이 있다면 @SpringBootApplication이 있는 스프링 Main 클래스에서 @ComponentScan을 사용하시면 됩니다.

 

@AutoConfiguration에서 빈을 자동등록하면 안되는 이유는 여러가지가 있지만

주요 이유는 명시성과 자동 구성의 목적에 어긋나기 때문입니다. 자동 구성은 가능한 한 "매직"을 줄이고, 명시적으로 구성을 제어하는 것을 목표로 합니다. 또한, @ComponentScan을 사용하면 예상치 못한 빈 충돌이나 오버라이딩 문제가 발생할 수 있습니다. 스프링 입장에서 빈을 등록하는 순서가 꼬이는 문제가 발생할 수도 있습니다.

대신, 자동 구성 클래스에서는 조건부 로직(@ConditionalOnClass, @ConditionalOnMissingBean 등)을 사용하여 필요한 빈이 자동으로 등록될 수 있도록 하는 것이 좋습니다. 이 방법은 더 선언적이며, 어떤 조건에서 어떤 빈이 등록되는지 명확하게 이해할 수 있게 해줍니다.

감사합니다.

jusungpark님의 프로필 이미지
jusungpark
Người đặt câu hỏi

항상 좋은 강의에 도움많이 받고있습니다.

자세한 설명 감사드립니다.

0

jusungpark님의 프로필 이미지
jusungpark
Người đặt câu hỏi

@Import 로 전체 서비스를 일일히 해주는건 비효율적으로 보이는데 섹션 5.자동구성 정리의 8:43 초 부분에서 내부에서 @ComponentScan 을 사용하면 안되는 이유에 대해서 의견주시면 감사하겠습니다. 내용 수정추가하였습니다.

Hình ảnh hồ sơ của jusungpark
jusungpark

câu hỏi đã được viết

Đặt câu hỏi