首页 文章

Spring Boot版本从1.5.8更改为2.0.0

提问于
浏览
0

在尝试迁移到spring boot 2.0版时,我在尝试运行Junits时遇到了以下问题 . 相同的单元测试用于 spring 启动版本1.5.8,但在更改版本后,它们开始失败 . 以下是该问题的堆栈跟踪 . 能不能让我知道同样的根本原因是什么?

应用程序运行失败java.lang.IllegalStateException:org.springframework.boot.autoconfigure.data.web.SpringDataWebAutoConfiguration.pageableCustomizer | at org.springframework.boot.autoconfigure.condition.SpringBootCondition.matches(SpringBootCondition.java:64)上的错误处理条件)| at org.springframework.context.annotation.ConditionEvaluator.shouldSkip(ConditionEvaluator.java:109)| at org.springframework.context.annotation.ConfigurationClassBeanDefinitionReader.loadBeanDefinitionsForBeanMethod(ConfigurationClassBeanDefinitionReader.java:179)| at org.springframework.context.annotation .ConfigurationClassBeanDefinitionReader.loadBeanDefinitionsForConfigurationClass(ConfigurationClassBeanDefinitionReader.java:141)| at org.springframework.context.annotation.ConfigurationClassBeanDefinitionReader.loadBeanDefinitions(ConfigurationClassBeanDefinitionReader.java:117)| at org.springframework.context.annotation.ConfigurationClassPostProcessor.processConfigBeanDefinitions(ConfigurationClass) PostProcessor.java:328)|at org.springframework.context.annotation.ConfigurationClassPostProcessor.postProcessBeanDefinitionRegistry(ConfigurationClassPostProcessor.java:233)| at org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanDefinitionRegistryPostProcessors(PostProcessorRegistrationDelegate.java:273)| at org . springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanFactoryPostProcessors(PostProcessorRegistrationDelegate.java:93)| at org.springframework.context.support.AbstractApplicationContext.invokeBeanFactoryPostProcessors(AbstractApplicationContext.java:693)| at org.springframework.context.support.AbstractApplicationContext.refresh( AbstractApplicationContext.java:531)|at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:752)| at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:388)| at org.springframework.boot . SpringApplication.run(SpringApplication.java:327)| at org.springframework . boot.test.context.SpringBootContextLoader.loadContext(SpringBootContextLoader.java:138)| at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContextInternal(DefaultCacheAwareContextLoaderDelegate.java:99)| at org.springframework.test.context.cache . DefaultCacheAwareContextLoaderDelegate.loadContext(DefaultCacheAwareContextLoaderDelegate.java:117)| at org.springframework.test.context.support.DefaultTestContext.getApplicationContext(DefaultTestContext.java:107)| at org.springframework.test.context.web.ServletTestExecutionListener.setUpRequestContextIfNecessary(ServletTestExecutionListener . java:190)| at org.springframework.test.context.web.ServletTestExecutionListener.prepareTestInstance(ServletTestExecutionListener.java:132)| at org.springframework.test.context.TestContextManager.prepareTestInstance(TestContextManager.java:242)| at org . springframework.test.context.junit4.SpringJUnit4ClassRunner.createTest(SpringJUnit4ClassRunner.java:227)| at org.springframework.t est.context.junit4.SpringJUnit4ClassRunner $ 1.runReflectiveCall(SpringJUnit4ClassRunner.java:289)| at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)| at org.springframework.test.context.junit4 .SpringJUnit4ClassRunner.methodBlock(SpringJUnit4ClassRunner.java:291)| at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:246)| at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner .java:97)| at org.junit.runners.ParentRunner $ 3.run(ParentRunner.java:290)| at org.junit.runners.ParentRunner $ 1.schedule(ParentRunner.java:71)| at org.junit.runners .ParentRunner.runChildren(ParentRunner.java:288)| at org.junit.runners.ParentRunner.access $ 000(ParentRunner.java:58)| at org.junit.runners.ParentRunner $ 2.evaluate(ParentRunner.java:268)|在org.springframework.test.context.junit4.statements.RunBeforeTestClassCallbacks.evaluate(RunBeforeTestClassCallbacks.java:61)| atorg.springframework.test.context.junit4.statements.RunAfterTestClassCallbacks.evaluate(RunAfterTestClassCallbacks.java:70)| at org.junit.runners.ParentRunner.run(ParentRunner.java:363)| at org.springframework.test.context . junit4.SpringJUnit4ClassRunner.run(SpringJUnit4ClassRunner.java:190)| at org.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.java:367)| at org.apache.maven.surefire.junit4.JUnit4Provider.executeWithRerun( JUnit4Provider.java:274)|at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:238)| at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:161) | at org.apache.maven.surefire.booter.ForkedBooter.invokeProviderInSameClassLoader(ForkedBooter.java:290)| at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:242)| at org.apache . maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:121)|引起:java.lang.IllegalStateException:@ConditionalOnMissingBean没有指定be使用类型,名称或注释以及尝试推断bean'stype失败| at org.springframework.boot.autoconfigure.condition.OnBeanCondition $ BeanSearchSpec.validate(OnBeanCondition.java:390)| at org.springframework.boot.autoconfigure .condition.OnBeanCondition $ BeanSearchSpec . (OnBeanCondition.java:380)| at org.springframework.boot.autoconfigure.condition.OnBeanCondition.getMatchOutcome(OnBeanCondition.java:114)| at org.springframework.boot.autoconfigure.condition.SpringBootCondition . matches(SpringBootCondition.java:47)| ...省略了42个常见框架|引起:org.springframework.boot.autoconfigure.condition.OnBeanCondition $ BeanTypeDeductionException:无法推断出org.springframework.boot.autoconfigure.data的bean类型 . web.SpringDataWebAutoConfiguration.pageableCustomizer | at org.springframework.boot.autoconfigure.condition.OnBeanCondition $ BeanSearchSpec.addDeducedBeanTypeForBeanMethod(OnBeanCondition.java:443)| at org.springframework.boot.autoconfigure.condition.OnBeanCondition $ Bean SearchSpec.addDeducedBeanType(OnBeanCondition.java:427)| at org.springframework.boot.autoconfigure.condition.OnBeanCondition $ BeanSearchSpec . (OnBeanCondition.java:374)| ... 44个常见框架省略|引起:java.lang.ClassNotFoundException :org.springframework.data.web.config.PageableHandlerMethodArgumentResolverCustomizer | at java.net.URLClassLoader.findClass(URLClassLoader.java:381)| at java.lang.ClassLoader.loadClass(ClassLoader.java:424)| at sun.misc . Launcher $ AppClassLoader.loadClass(Launcher.java:335)| at java.lang.ClassLoader.loadClass(ClassLoader.java:357)| at org.springframework.util.ClassUtils.forName(ClassUtils.java:264)| at org . springframework.boot.autoconfigure.condition.OnBeanCondition $ BeanSearchSpec.addDeducedBeanTypeForBeanMethod(OnBeanCondition.java:437)| ... 46个常用框架省略| 2018-05-10 09:32:00,391 INFO [main] GenericWebApplicationContext []>:关闭组织.springframework.web.context.support.GenericWebApplicationContext @ 71f bfa85:启动日期[Thu May 10 09:31:59 IST 2018]; root上下文层次结构2018-05-10 09:32:00,393 ERROR [main] TestContextManager []>:允许TestExecutionListener [org.springframework.test.context.web.ServletTestExecutionListener @ 3e3894 ce]准备测试实例[com . sap.bs.businesslogging.util.ConfigValidatorTest @ 748500f 3] java.lang.IllegalStateException:无法加载ApplicationContext | at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContext(DefaultCacheAwareContextLoaderDelegate.java:125)| at org.springframework .test.context.support.DefaultTestContext.getApplicationContext(DefaultTestContext.java:107)| at org.springframework.test.context.web.ServletTestExecutionListener.setUpRequestContextIfNecessary(ServletTestExecutionListener.java:190)| at org.springframework.test.context.web .ServletTestExecutionListener.prepareTestInstance(ServletTestExecutionListener.java:132)| at org.springframework.test.context.TestContextManager.prepareTestInstance(TestContextManager.java:242)| at org.sp ringframework.test.context.junit4.SpringJUnit4ClassRunner.createTest(SpringJUnit4ClassRunner.java:227)| at org.springframework.test.context.junit4.SpringJUnit4ClassRunner $ 1.runReflectiveCall(SpringJUnit4ClassRunner.java:289)| at org.junit.internal.runners .model.ReflectiveCallable.run(ReflectiveCallable.java:12)| at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.methodBlock(SpringJUnit4ClassRunner.java:291)| atorg.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:246)| at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:97)| at org.junit.runners . ParentRunner $ 3.run(ParentRunner.java:290)| at org.junit.runners.ParentRunner $ 1.schedule(ParentRunner.java:71)| at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)| at org.junit.runners.ParentRunner.access $ 000(ParentRunner.java:58)| at org.junit.runners.ParentRunner $ 2.evaluate(ParentRunner.java:268)| at org.springframework.test.context.junit4.statements . RunBeforeTestClassCallbacks.evaluate(RunBeforeTestClassCallbacks.java:61)| at org.springframework.test.context.junit4.statements.RunAfterTestClassCallbacks.evaluate(RunAfterTestClassCallbacks.java:70)| at org.junit.runners.ParentRunner.run(ParentRunner.java: 363)| at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run(SpringJUnit4ClassRunner.java:190)| at org.apache.maven.surefire.j unit4.JUnit4Provider.execute(JUnit4Provider.java:367)| at org.apache.maven.surefire.junit4.JUnit4Provider.executeWithRerun(JUnit4Provider.java:274)| at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet( JUnit4Provider.java:238)|at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:161)| at org.apache.maven.surefire.booter.ForkedBooter.invokeProviderInSameClassLoader(ForkedBooter.java:290) | at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:242)| at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:121)|引起:java . lang.IllegalStateException:org.springframework.boot.autoconfigure.data.web.SpringDataWebAutoConfiguration.pageableCustomizer | at org.springframework.boot.autoconfigure.condition.SpringBootCondition.matches(SpringBootCondition.java:64)| at org.springframework上的错误处理条件.context.annotation.ConditionEvaluator.shouldSkip(ConditionEvaluator.java:109)| at org.springframework.cont ext.annotation.ConfigurationClassBeanDefinitionReader.loadBeanDefinitionsForBeanMethod(ConfigurationClassBeanDefinitionReader.java:179)|在org.springframework.context.annotation.ConfigurationClassBeanDefinitionReader.loadBeanDefinitionsForConfigurationClass(ConfigurationClassBeanDefinitionReader.java:141)|在org.springframework.context.annotation.ConfigurationClassBeanDefinitionReader.loadBeanDefinitions(ConfigurationClassBeanDefinitionReader . java:117)| at org.springframework.context.annotation.ConfigurationClassPostProcessor.processConfigBeanDefinitions(ConfigurationClassPostProcessor.java:328)| at org.springframework.context.annotation.ConfigurationClassPostProcessor.postProcessBeanDefinitionRegistry(ConfigurationClassPostProcessor.java:233)| at org.springframework . context.support.PostProcessorRegistrationDelegate.invokeBeanDefinitionRegistryPostProcessors(PostProcessorRegistrationDelegate.java:273)| at org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanFacto ryPostProcessors(PostProcessorRegistrationDelegate.java:93)| at org.springframework.context.support.AbstractApplicationContext.invokeBeanFactoryPostProcessors(AbstractApplicationContext.java:693)| at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:531)| at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:752)| at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:388)| at org.springframework.boot.SpringApplication.run(SpringApplication.java: 327)| at org.springframework.boot.test.context.SpringBootContextLoader.loadContext(SpringBootContextLoader.java:138)| at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContextInternal(DefaultCacheAwareContextLoaderDelegate.java:99)| at org . springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContext(DefaultCacheAwareContextLoaderDelegate.java:117)| ... 26个常见框架省略|引起:java . lang.IllegalStateException:@ConditionalOnMissingBean没有使用类型,名称或注释指定bean,并且尝试推断bean'stype失败| at org.springframework.boot.autoconfigure.condition.OnBeanCondition $ BeanSearchSpec.validate(OnBeanCondition.java:390 )| at org.springframework.boot.autoconfigure.condition.OnBeanCondition $ BeanSearchSpec . (OnBeanCondition.java:380)| at org.springframework.boot.autoconfigure.condition.OnBeanCondition.getMatchOutcome(OnBeanCondition.java:114)| atorg.springframework.boot.autoconfigure.condition.SpringBootCondition.matches(SpringBootCondition.java:47)| ...省略了42个常见帧|引起:org.springframework.boot.autoconfigure.condition.OnBeanCondition $ BeanTypeDeductionException:无法推断bean类型为org.springframework.boot.autoconfigure.data.web.SpringDataWebAutoConfiguration.pageableCustomizer | at org.springframework.boot.autoconfigure.condition.OnBeanCondition $ BeanSearchSpec.addDeducedBeanTypeForBeanMethod(OnBeanCondition.java:443)| at org.springframework.boot.autoconfigure .condition.OnBeanCondition $ BeanSearchSpec.addDeducedBeanType(OnBeanCondition.java:427)| at org.springframework.boot.autoconfigure.condition.OnBeanCondition $ BeanSearchSpec . (OnBeanCondition.java:374)| ... 44个常见的帧省略|引起: java.lang.ClassNotFoundException:org.springframework.data.web.config.PageableHandlerMethodArgumentResolverCustomizer | at java.net.URLClassLoader.findClass(URLClassLoader.java:381)| at java.lang.ClassLoader.loadClass(Clas sLoader.java:424)[at sun.misc.Launcher $ AppClassLoader.loadClass(Launcher.java:335)| at java.lang.ClassLoader.loadClass(ClassLoader.java:357)| at org.springframework.util.ClassUtils . forName(ClassUtils.java:264)| at org.springframework.boot.autoconfigure.condition.OnBeanCondition $ BeanSearchSpec.addDeducedBeanTypeForBeanMethod(OnBeanCondition.java:437)| ... 46个常用框架省略

2 回答

  • 0

    正如罗迪所指出的,错误发生的原因是错过了 org.springframework.data.web.config.PageableHandlerMethodArgumentResolverCustomizer .

    您的 POM.xml 中是否有任何Spring Data依赖项?例如, spring-data-jpa .

    <dependency>
            <groupId>org.springframework.data</groupId>
            <artifactId>spring-data-jpa</artifactId>
        </dependency>
    
  • 1

    在我的情况下,它是 SpringDataWebAutoConfiguration 被触发(当它不应该是)并且它在类路径 PageableHandlerMethodArgumentResolverCustomizer 上缺少类的问题 . 但是我没有在依赖项中包含spring-data,所以我不得不排除它 . 以下是如何在gradle中执行此操作的示例代码:

    configurations {
        compile.exclude module: 'spring-data-commons'
    }
    

相关问题