728x90
반응형
SMALL
Parameter 1 of method simpleRabbitListenerContainerFactory in org.springframework.boot.autoconfigure.amqp.RabbitAnnotationDrivenConfiguration required a single bean, but 2 were found:
`1 개의 빈만 매칭되야 하지만 2개의 빈이 존재한다며 오류가 발생한다.`
프로그래밍 하다보면 같은 타입의 빈을 중복으로 등록할때가 있다.
나같은 경우 RabbitMQ 커넥션을 2개를 등록하면서 해당 오류 `Parameter 1 of method simpleRabbitListenerContainerFactory in org.springframework.boot.autoconfigure.amqp.RabbitAnnotationDrivenConfiguration required a single bean, but 2 were found:`가 발생하였다.
문제해결
@Primary 사용
스프링은 `하나의 타입에 빈 객체가 여러개인경우` 그 중 `우선순위를 갖는 빈`이라는것을 `지정`할 수 있도록 `@Primary 어노테이션`을 제공하고 한다.
xml에서는 `primary="true"`로 설정한다.
<bean primary="true" id="externalConnectionFactory"
class="org.springframework.amqp.rabbit.connection.CachingConnectionFactory ">
<constructor-arg value="${rabbit.host}"/>
<property name="username" value="${rabbit.username}"/>
<property name="password" value="${rabbit.password}"/>
</bean>
<bean id ="internalConnectionFactory"
class="org.springframework.amqp.rabbit.connection.CachingConnectionFactory">
<constructor-arg value="${rabbit.host}"/>
<property name="username" value="${rabbit.username}"/>
<property name="password" value="${rabbit.password}"/>
<property name="virtualHost" value="${rabbit.vrhost}"/>
</bean>
그러나 @Primary도 중복으로 사용되면 `NoUniqueBeanDefinitionException`이 발생하기 때문에 주의하자.
728x90
반응형
LIST
'SPRING > 스프링부트' 카테고리의 다른 글
로컬,개발,운영 yml를 하나로 통합 및 프로퍼티 호출시 @Value의 장단점 및 대체재 (0) | 2023.08.09 |
---|---|
Prometheus & Grafana & Spring boot 모니티링 하기 (0) | 2023.07.31 |
기본 manifest 속성이 없습니다 gradle (0) | 2022.03.25 |
[ log4j ] log4j-slf4j-impl cannot be present with log4j-to-slf4j 오류 (0) | 2022.03.25 |
gradlew Execution failed for task ':test' 오류 발생 (0) | 2022.03.25 |