#spring #spring-boot
#spring #spring-boot
Вопрос:
Два компонента, квалифицированные по-разному с одним и тем же именем, дают мне исключение.
Сообщение об исключении:
***************************
APPLICATION FAILED TO START
***************************
Description:
The bean 'tipusFonsSql', defined in class path resource [net/gencat/clt/arxius/connector/config/SqlGiacTxtResourceLoader.class], could not be registered. A bean with that name has already been defined in class path resource [net/gencat/clt/arxius/connector/config/SqlGiacImgResourceLoader.class] and overriding is disabled.
Это говорит мне о том, что class SqlGiacTxtResourceLoader
и class SqlGiacImgResourceLoader
определяют два компонента с одинаковым именем.
Тем не менее, они "@Qualified"
разные. Я имею в виду:
В SqlGiacImgResourceLoader
@Bean
@GiacImg @TipusFonsQ
public String tipusFonsSql() {
//...
}
В SqlGiacTxtResourceLoader
@Bean
@GiacTxt @TipusFonsQ
public String tipusFonsSql() {
//...
}
Как вы можете видеть, один "@aulified"
с @GiacImg
аннотацией, а другой с помощью @GiacTxt
.
Есть идеи?
Комментарии:
1. У вас не может быть одинакового идентификатора для разных компонентов. Так что это не сработает.
Ответ №1:
Вы должны назвать их так
@Bean(name = "GiacImg TipusFonsQ")
public String tipusFonsSql() {
//...
}
и
@Bean(name = "GiacTxt TipusFonsQ")
public String tipusFonsSql() {
//...
}
чтобы избежать конфликта компонентов
Ответ №2:
Существует 2 способа решения этой проблемы (ха-ха, их может быть много, но я знаю ниже 2 подхода):——
1-й способ
измените имя компонента:—
@Bean(name = "custome bean name")
2-й способ
запишите приведенный ниже ключ в application.properties:—
spring.main.allow-bean-definition-overriding=true
ПРИМЕЧАНИЕ: -в вашем случае вы также можете изменить имя метода