Бины Spring Integration не создаются, когда spring.main.lazy-initialization = true - PullRequest
0 голосов
/ 05 февраля 2020

Со ссылкой на мой предыдущий вопрос здесь

Приложение Spring Boot не запускается, когда все компоненты помечены как Lazy, так как не может найти канал ошибки

и ссылку на проблему здесь:

https://github.com/spring-projects/spring-boot/issues/16184#issuecomment -480196051

Кто-нибудь знает, какие бины необходимо добавить к экземпляру LazyInitializationExcludeFilter для того, чтобы для Spring Integration для запуска, когда spring.main.lazy-initialization=true?

Я получаю ошибки, как показано ниже, говоря, что bean-компонент "myErrorChannel" недоступен, где это определено в коде, например:

@MessagingGateway(errorChannel = "myErrorChannel")
@FunctionalInterface
public interface SomeInterface{
}

Как я могу сделать создание канала ошибок скорее ленивым, чем ленивым? Добавление LazyInitializationExcludeFilter и попытка отфильтровать bean-компоненты, называемые myErrorChannel, не работают, поскольку должен быть другой (ленивый) bean-компонент, который не создает bean-компонент errorChannel.

Stacktrace:

org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'myErrorChannel' available
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeanDefinition(DefaultListableBeanFactory.java:805)
    at org.springframework.beans.factory.support.AbstractBeanFactory.getMergedLocalBeanDefinition(AbstractBeanFactory.java:1278)
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:297)
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:207)
    at org.springframework.integration.support.channel.BeanFactoryChannelResolver.resolveDestination(BeanFactoryChannelResolver.java:89)
    at org.springframework.integration.support.channel.BeanFactoryChannelResolver.resolveDestination(BeanFactoryChannelResolver.java:46)
    at org.springframework.integration.gateway.MessagingGatewaySupport.getErrorChannel(MessagingGatewaySupport.java:414)
    at org.springframework.integration.graph.IntegrationGraphServer$NodeFactory.gatewayNode(IntegrationGraphServer.java:374)
    at org.springframework.integration.graph.IntegrationGraphServer.lambda$gateways$5(IntegrationGraphServer.java:258)
    at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193)
    at java.util.Collections$UnmodifiableMap$UnmodifiableEntrySet.lambda$entryConsumer$0(Collections.java:1577)
    at java.util.HashMap$EntrySpliterator.forEachRemaining(HashMap.java:1699)
    at java.util.Collections$UnmodifiableMap$UnmodifiableEntrySet$UnmodifiableEntrySetSpliterator.forEachRemaining(Collections.java:1602)
    at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:482)
    at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:472)
    at java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:150)
    at java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:173)
    at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
    at java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:485)
    at org.springframework.integration.graph.IntegrationGraphServer.gateways(IntegrationGraphServer.java:263)
    at org.springframework.integration.graph.IntegrationGraphServer.buildGraph(IntegrationGraphServer.java:184)
    at org.springframework.integration.graph.IntegrationGraphServer.onApplicationEvent(IntegrationGraphServer.java:115)
    at org.springframework.integration.graph.IntegrationGraphServer.onApplicationEvent(IntegrationGraphServer.java:66)

1 Ответ

1 голос
/ 05 февраля 2020

Решается, делая любые бины, созданные таким образом, ленивыми:

@Bean
public IntegrationFlow someBeanName() {
    return IntegrationFlows.from("someString")
            .handle(restCallFailedHandler())
            .handle(finishedHandler())
            .get();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...