A bean with that name has already been defined and overriding is disabled.

2024, Nov 04    
feign

Error

***************************
APPLICATION FAILED TO START
***************************

Description:

The bean 'xxx.xxx' 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

Problem


@FeignClient(
    contextId = "xxx.xxx",
    name = "test",
    configuration = FeignConfiguration.class,
    primary = false
)

Cause

  • Feign Client는 기본적으로 contextId값으로 다른 클라이언트와 구분하기도 하고 빈으로 등록되는 값을 사용된다.
  • 만약에 contextId가 빈값이면 feign의 기본값으로 설정되고, 다른 클래스에서도 빈값으로 두면 중복되어 위의 에러가 발생하기도 하고
  • contextId를 정의했다 하더라도 다른 클래스의 contextId와 동일한 값이면 위의 에러가 발생한다.

Solve

  • 중복되지 않도록 contextId를 package + class name 구성으로 해주는 것이 좋다.