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

RealTone님의 프로필 이미지

작성한 질문수

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

외부설정 사용 - @Value

@Configuration 자동 설정?

작성

·

179

0

[질문 내용]
안녕하세요!! 현재 강의를 들으면서 MyDataSourceValueConfig 부분에서 Application을 실행하면
***************************

APPLICATION FAILED TO START

***************************

Description:

The bean 'myDataSource', defined in class path resource [hello/config/MyDataSourceValueConfig.class], could not be registered. A bean with that name has already been defined in class path resource [hello/config/MyDataSourceEnvConfig.class] and overriding is disabled.

Action:

Consider renaming one of the beans or enabling overriding by setting spring.main.allow-bean-definition-overriding=true
아래와 같은 오류가 발생합니다...
애플리케이션은 value의 Bean을 등록하는데, 왜 오버라이딩 오류가 발생하는 걸까요?? @ComponetScan이 없으면 @Configuration은 Import해야만 Bean이 등록되는 것으로 알고 있는데, 오버라이딩 오류가 발생하는 이유를 모르겠습니다!! 현재Env 클래스의 @Configuration을 주석처리하면 정상 작동하긴 합니다!!

답변 3

0

안녕하세요. RealTone님, 공식 서포터즈 y2gcoder입니다.

강의 영상과 자료를 보시면

image

이런식으로 @SpringBootApplication()의 scanBasePackages 속성을 이용해서 스캔할 범위를 제한해주면서 hello.config 패키지의 빈들을 기본적으로 스캔 대상에 들어가지 않도록 설정한 모습을 보실 수 있습니다!

RealTone님은 이런한 스캔 범위 제한을 해두지 않아 중복으로 빈을 등록하려고 해 오류가 발생하는 것으로 보입니다 :)

감사합니다.

0

RealTone님의 프로필 이미지
RealTone
질문자

@SpringBootApplication 에 @ComponentScan이 있어서 @Configuration이 스캔되어 2번 출력하는 것으로 해결되었습니다!! 그런데, 영한님의 강의에서는 왜 로그가 한번밖에 출력되지 않는건가요???

0

RealTone님의 프로필 이미지
RealTone
질문자

메소드가 같아 생기는 오류인가하여 Value의 myDataSource -> myDataSource1으로 하면 정상 작동하지만 ENV와 VALUE 모두 로그가 출력되는데, 그 이유를 알고 싶습니다

RealTone님의 프로필 이미지

작성한 질문수

질문하기