[Spring]Bean 중복 오류 해결

HoJeong Choi·2023년 3월 26일
0
***************************
APPLICATION FAILED TO START
***************************

Description:

The bean 'testClient.FeignClientSpecification' could not be registered. A bean with that name has already been defined and overriding is disabled.

Action:

Consider renaming one of the beans or enabling overriding by setting spring.main.allow-bean-definition-overriding=true

이 오류는 스프링 부트 애플리케이션에서 같은 이름의 빈을 두 번 이상 등록하려고 할 때 발생합니다.
스프링 프레임워크에서는 기본적으로 빈의 이름이 중복되면 오류를 발생시키며, 이를 해결하기 위해 다음과 같은 방법들이 있습니다.

  1. 빈의 이름을 고유하게 만들기
    각 빈의 이름을 고유하게 만들어서 중복을 피할 수 있습니다. 예를 들어, 다음과 같이 빈의 이름에 접두어를 붙여서 고유한 이름을 만들 수 있습니다.
@Bean
public TestClient.FeignClientSpecification testClientFeignClientSpecification() {
    return new TestClient.FeignClientSpecification();
}
  1. 빈의 이름을 변경하기
    이미 등록된 빈의 이름을 변경해서 중복을 피할 수 있습니다. 예를 들어, 다음과 같이 빈의 이름을 변경할 수 있습니다.
@Bean(name = "testClientSpecification2")
public TestClient.FeignClientSpecification testClientFeignClientSpecification() {
    return new TestClient.FeignClientSpecification();
}
  1. 빈의 재정의 허용하기
    빈의 재정의를 허용하도록 설정하여 같은 이름의 빈을 등록할 수 있습니다. 이를 위해서는 다음과 같이 애플리케이션의 설정 파일에 다음과 같은 옵션을 추가합니다.
    (스프링 2.1버전 부터는 default 값이 false 임.)
spring.main.allow-bean-definition-overriding=true

0개의 댓글