Spring Cloud Stream v3.0.2.RELEASE выдает ошибку при запуске Spring Cloud Kafka Test - PullRequest
1 голос
/ 11 марта 2020

Я работаю над приложением весенней загрузки, где я должен обновить версию весенней загрузки с v2.2.2.RELEASE до v2.2.4.RELEASE. Я обновил все зависимости и версии Spring-Boot, Spring-Framework и других зависимостей проекта Spring (например, Spring Cloud, Spring Cloud-Stream).

Я обновил Spring-Cloud-Stream с v3.0.1.RELEASE до v3.0.2.RELEASE. Я начал получать исключение в классе FunctionConfiguration, как показано ниже.

{"mdc":{},"timestamp":"2020-03-11 15:30:58.160","level":"INFO","logger":"org.springframework.cloud.function.context.catalog.BeanFactoryAwareFunctionRegistry",
"message":"Looking up function 'null' with acceptedOutputTypes: [application/json]","exception":""}
{"mdc":{},"timestamp":"2020-03-11 15:31:38.601","level":"WARN","logger":"org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext",
"message":"Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.BeanCreationException: 
Error creating bean with name 'functionInitializer' defined in class path resource [org/springframework/cloud/stream/function/FunctionConfiguration.class]: 
Invocation of init method failed; nested exception is java.util.NoSuchElementException","exception":""}

{"mdc":{},"timestamp":"2020-03-11 15:32:42.254","level":"ERROR","logger":"org.springframework.boot.SpringApplication","message":"Application run failed",
"exception":"\r\norg.springframework.beans.factory.BeanCreationException: 
Error creating bean with name 'functionInitializer' defined in class path resource [org/springframework/cloud/stream/function/FunctionConfiguration.class]: 
Invocation of init method failed; nested exception is java.util.NoSuchElementException\r\n\tat
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1796)\r\n\tat
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:595)\r\n\tat
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:517)\r\n\tat
org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:323)\r\n\tat
org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)\r\n\tat
org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:321)\r\n\tat org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:202)\r\n\tat
org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:879)\r\n\tat
org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:878)\r\n\tat
org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:550)\r\n\tat
org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:141)\r\n\tat
org.springframework.boot.SpringApplication.refresh(SpringApplication.java:747)\r\n\tat org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:397)\r\n\tat
org.springframework.boot.SpringApplication.run(SpringApplication.java:315)\r\n\tat org.springframework.boot.test.context.SpringBootContextLoader.loadContext(SpringBootContextLoader.java:126)\r\n\tat
org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContextInternal(DefaultCacheAwareContextLoaderDelegate.java:99)\r\n\tat
org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContext(DefaultCacheAwareContextLoaderDelegate.java:124)\r\n\tat
org.springframework.test.context.support.DefaultTestContext.getApplicationContext(DefaultTestContext.java:123)\r\n\tat
org.springframework.test.context.support.DependencyInjectionTestExecutionListener.injectDependencies(DependencyInjectionTestExecutionListener.java:118)\r\n\tat
org.springframework.test.context.support.DependencyInjectionTestExecutionListener.prepareTestInstance(DependencyInjectionTestExecutionListener.java:83)\r\n\tat
org.springframework.boot.test.autoconfigure.SpringBootDependencyInjectionTestExecutionListener.prepareTestInstance(SpringBootDependencyInjectionTestExecutionListener.java:43)\r\n\tat
org.springframework.test.context.TestContextManager.prepareTestInstance(TestContextManager.java:244)\r\n\tat
org.springframework.test.context.junit4.SpringJUnit4ClassRunner.createTest(SpringJUnit4ClassRunner.java:227)\r\n\tat
org.springframework.test.context.junit4.SpringJUnit4ClassRunner$1.runReflectiveCall(SpringJUnit4ClassRunner.java:289)\r\n\tat org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)\r\n\tat
org.springframework.test.context.junit4.SpringJUnit4ClassRunner.methodBlock(SpringJUnit4ClassRunner.java:291)\r\n\tat
org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:246)\r\n\tat
org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:97)\r\n\tat org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)\r\n\tat
org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)\r\n\tat org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)\r\n\tat org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)\r\n\tat
org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)\r\n\tat org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)\r\n\tat
org.springframework.test.context.junit4.statements.RunBeforeTestClassCallbacks.evaluate(RunBeforeTestClassCallbacks.java:61)\r\n\tat
org.springframework.test.context.junit4.statements.RunAfterTestClassCallbacks.evaluate(RunAfterTestClassCallbacks.java:70)\r\n\tat org.junit.rules.ExternalResource$1.evaluate(ExternalResource.java:48)\r\n\tat
org.junit.rules.RunRules.evaluate(RunRules.java:20)\r\n\tat org.junit.runners.ParentRunner.run(ParentRunner.java:363)\r\n\tat
org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run(SpringJUnit4ClassRunner.java:190)\r\n\tat org.junit.runner.JUnitCore.run(JUnitCore.java:137)\r\n\tat
org.junit.runner.JUnitCore.run(JUnitCore.java:115)\r\n\tat org.junit.vintage.engine.execution.RunnerExecutor.execute(RunnerExecutor.java:40)\r\n\tat java.util.stream.ForEachOps$ForEachOp$OfRef.accept(Unknown Source)\r\n\tat
java.util.stream.ReferencePipeline$3$1.accept(Unknown Source)\r\n\tat java.util.Iterator.forEachRemaining(Unknown Source)\r\n\tat java.util.Spliterators$IteratorSpliterator.forEachRemaining(Unknown Source)\r\n\tat
java.util.stream.AbstractPipeline.copyInto(Unknown Source)\r\n\tat java.util.stream.AbstractPipeline.wrapAndCopyInto(Unknown Source)\r\n\tat java.util.stream.ForEachOps$ForEachOp.evaluateSequential(Unknown Source)\r\n\tat
java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(Unknown Source)\r\n\tat java.util.stream.AbstractPipeline.evaluate(Unknown Source)\r\n\tat java.util.stream.ReferencePipeline.forEach(Unknown Source)\r\n\tat
org.junit.vintage.engine.VintageTestEngine.executeAllChildren(VintageTestEngine.java:80)\r\n\tat org.junit.vintage.engine.VintageTestEngine.execute(VintageTestEngine.java:71)\r\n\tat
org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:229)\r\n\tat org.junit.platform.launcher.core.DefaultLauncher.lambda$execute$6(DefaultLauncher.java:197)\r\n\tat
org.junit.platform.launcher.core.DefaultLauncher.withInterceptedStreams(DefaultLauncher.java:211)\r\n\tat org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:191)\r\n\tat
org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:137)\r\n\tat org.eclipse.jdt.internal.junit5.runner.JUnit5TestReference.run(JUnit5TestReference.java:89)\r\n\tat
org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:41)\r\n\tat org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:541)\r\n\tat
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:763)\r\n\tat org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:463)\r\n\tat
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:209)\r\nCaused by: java.util.NoSuchElementException: null\r\n\tat java.util.LinkedHashMap$LinkedHashIterator.nextNode(Unknown Source)\r\n\tat
java.util.LinkedHashMap$LinkedKeyIterator.next(Unknown Source)\r\n\tat
org.springframework.cloud.stream.function.FunctionConfiguration$FunctionToDestinationBinder.bindFunctionToDestinations(FunctionConfiguration.java:430)\r\n\tat
org.springframework.cloud.stream.function.FunctionConfiguration$FunctionToDestinationBinder.afterPropertiesSet(FunctionConfiguration.java:371)\r\n\tat
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1855)\r\n\tat
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1792)\r\n\t... 65 common frames omitted\r\n\r\n"}

Я вижу, что в FunctionConfiguration было сделано много изменений и эти изменения связаны с рефакторингом кода и исправлением некоторых проблем.

Когда я изучаю коммиты и узнаю о следующем свойстве: spring.cloud.function.definition=func

Я добавил указанное выше свойство в переменную среды приложения, и оно начало работать. У меня есть несколько вопросов.

  • Для чего используется следующее свойство?
  • Какие изменения были внесены недавно, поэтому приложение не работает без этого свойства.
...