#spring-boot #jhipster #jhipster-registry #jhipster-gateway
#spring-boot #jhipster #jhipster-registry #jhipster-gateway
Вопрос:
В настоящее время я сталкиваюсь с проблемой при централизации конфигурации клиента микросервиса в JHipster-registry. Я использую подход файловой системы для централизации папки конфигурации (central-config) приложения реестра.
Во время запуска клиентских приложений микросервиса во время выполнения я получаю это исключение, как показано ниже
██╗ ██╗ ██╗ ████████╗ ███████╗ ██████╗ ████████╗ ████████╗ ███████╗
██║ ██║ ██║ ╚══██╔══╝ ██╔═══██╗ ██╔════╝ ╚══██╔══╝ ██╔═════╝ ██╔═══██╗
██║ ████████║ ██║ ███████╔╝ ╚█████╗ ██║ ██████╗ ███████╔╝
██╗ ██║ ██╔═══██║ ██║ ██╔════╝ ╚═══██╗ ██║ ██╔═══╝ ██╔══██║
╚██████╔╝ ██║ ██║ ████████╗ ██║ ██████╔╝ ██║ ████████╗ ██║ ╚██╗
╚═════╝ ╚═╝ ╚═╝ ╚═══════╝ ╚═╝ ╚═════╝ ╚═╝ ╚═══════╝ ╚═╝ ╚═╝
:: JHipster ? :: Running Spring Boot 2.1.6.RELEASE ::
:: https://www.jhipster.tech ::
2020-09-14 12:09:12.061 INFO 3828 --- [ restartedMain] c.t.g.GlueResourceDataServiceApp : The following profiles are active: dev
2020-09-14 12:09:16.314 WARN 3828 --- [ restartedMain] ConfigServletWebServerApplicationContext : Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.support.BeanDefinitionOverrideException: Invalid bean definition with name 'processorStorageGateway' defined in null: Cannot register bean definition [Generic bean: class [org.springframework.integration.gateway.GatewayProxyFactoryBean]; scope=; abstract=false; lazyInit=false; autowireMode=0; dependencyCheck=0; autowireCandidate=true; primary=false; factoryBeanName=null; factoryMethodName=null; initMethodName=null; destroyMethodName=null] for bean 'processorStorageGateway': There is already [Generic bean: class [org.springframework.integration.gateway.GatewayProxyFactoryBean]; scope=; abstract=false; lazyInit=false; autowireMode=0; dependencyCheck=0; autowireCandidate=true; primary=false; factoryBeanName=null; factoryMethodName=null; initMethodName=null; destroyMethodName=null] bound.
2020-09-14 12:09:16.342 ERROR 3828 --- [ restartedMain] o.s.b.d.LoggingFailureAnalysisReporter :
***************************
APPLICATION FAILED TO START
***************************
Description:
The bean 'processorStorageGateway', defined in null, could not be registered. A bean with that name has already been defined in null and overriding is disabled.
Action:
Consider renaming one of the beans or enabling overriding by setting spring.main.allow-bean-definition-overriding=true
Я попробовал подход, подобный использованию свойства в папке central-config приложения registry, файле .yml (который содержит центральную конфигурацию для клиентского приложения)
spring:
main:
allow-bean-definition-overriding: true
но пока безуспешно.
Я попытался определить аннотацию @Service также в интерфейсе, внедрение компонента которого завершается с ошибкой, указанной выше, как показано ниже
@MessagingGateway
@Service
public interface ProcessorStorageGateway {
..... }
Я видел два файла ссылочного класса, которые используют этот интерфейс для автоматического подключения
FailJobscheduler и ExternalQueuelistener, которые пытаются внедрить этот компонент ‘processorGateway’ типа interface во время выполнения, переименование их свойства autowiring также не помогает решить проблему, как указано ниже
@Component
public class FailJobsScheduler {
private final Logger log = LoggerFactory.getLogger(this.getClass());
@Autowired
private JobService jobService;
@Autowired
private ProcessorStorageGateway processorStorageGateway;
............
}
@Service
public class ExternalQueueListener {
private final Logger log = LoggerFactory.getLogger(this.getClass());
@Autowired
private ProcessorStorageGateway processorStorageGateway;
.....
}
В настоящее время застрял в этой проблеме, поскольку переопределение компонента Spring Boot-2.1 и далее по умолчанию не разрешено во время выполнения.
Вышеупомянутый хит и пробная версия, упомянутые в начале, также не помогли. Кто-нибудь может помочь советом по этой проблеме и наилучшим способом ее решения?
Ответ №1:
Вышеупомянутая проблема была решена путем исключения некоторых дублирующихся аннотаций Spring, которые уже присутствовали в project, во время дальнейшего расследования, такого как @Configuration и т. Д., А также в основном классе приложения Spring-BOOT, путем упоминания проверки компонентов для выполнения для соответствующих пакетов. помогите решить проблему