inflearn logo
강의

Course

Instructor

Spring Boot - Core Principles and Applications

Using Auto-configuration Libraries 2

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

401

jusungpark

16 asked

1

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

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

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

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

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

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

spring spring-boot prometheus grafana

Answer 2

2

yh

안녕하세요. 램쥐뱅님

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

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

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

 

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

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

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

감사합니다.

2

jusungpark

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

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

0

jusungpark

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

보안이 엄격한 데이터

0

73

1

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

1

43

1

http://localhost:8080/actuator/prometheus

0

85

3

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

0

64

1

build.gradle bom link 변경

0

65

2

@Counted 초기화

0

47

1

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

0

101

2

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

0

67

1

@Configuration 질문드립니다.

0

84

2

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

0

101

1

localhost:8080/hello-servlet 404오류

0

123

2

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

1

154

2

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

0

160

1

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

0

94

2

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

0

158

1

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

1

127

1

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

0

89

1

404 페이지

0

133

3

actuator 호출시 타임스탬프 질문

0

90

1

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

0

125

1

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

0

105

1

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

0

93

1

Thread Config Max 패널 설정 변경 질문

0

128

1

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

0

107

1