Spring Boot报错:No session repository could be auto-configured, check your configuration的解决方法
本文主要跟大家分享了关于SpringBoot报错:Nosessionrepositorycouldbeauto-configured,checkyourconfiguration的解决方法,下面话不多说,来一起看看详细的介绍:
一、环境介绍
JDK1.8 spring-Boot1.5.1.RELEASE,STSIDE
二、 问题的提出
创建了一个非常简约的SpringBootWebApplication,其中使用了Spring-Session,具体的maven依赖如下:
org.springframework.session spring-session lt;/dependency>
在启动过程中,出现了如下错误信息:
ErrorstartingApplicationContext.Todisplaytheauto-configurationreportre-runyourapplicationwith'debug'enabled. 2017-02-2317:48:10.710ERROR29484---[restartedMain]o.s.boot.SpringApplication:Applicationstartupfailed org.springframework.beans.factory.BeanCreationException:Errorcreatingbeanwithname'org.springframework.boot.autoconfigure.session.SessionAutoConfiguration$SessionRepositoryValidator':Invocationofinitmethodfailed;nestedexceptionisjava.lang.IllegalArgumentException:Nosessionrepositorycouldbeauto-configured,checkyourconfiguration(sessionstoretypeis'null') atorg.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor.postProcessBeforeInitialization(InitDestroyAnnotationBeanPostProcessor.java:137) atorg.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyBeanPostProcessorsBeforeInitialization(AbstractAutowireCapableBeanFactory.java:409) atorg.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1620) atorg.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:555) atorg.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:483) atorg.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:306) atorg.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230) atorg.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:302) atorg.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197) atorg.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:761) atorg.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:866) atorg.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:542) atorg.springframework.boot.context.embedded.EmbeddedWebApplicationContext.refresh(EmbeddedWebApplicationContext.java:122) atorg.springframework.boot.SpringApplication.refresh(SpringApplication.java:737) atorg.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:370) atorg.springframework.boot.SpringApplication.run(SpringApplication.java:314) atorg.springframework.boot.SpringApplication.run(SpringApplication.java:1162) atorg.springframework.boot.SpringApplication.run(SpringApplication.java:1151) atorg.rosebird.data.stock.StockdataApplication.main(StockdataApplication.java:10) atsun.reflect.NativeMethodAccessorImpl.invoke0(NativeMethod) atsun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) atsun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) atjava.lang.reflect.Method.invoke(Method.java:497) atorg.springframework.boot.devtools.restart.RestartLauncher.run(RestartLauncher.java:49) Causedby:java.lang.IllegalArgumentException:Nosessionrepositorycouldbeauto-configured,checkyourconfiguration(sessionstoretypeis'null') atorg.springframework.util.Assert.notNull(Assert.java:115) atorg.springframework.boot.autoconfigure.session.SessionAutoConfiguration$SessionRepositoryValidator.checkSessionRepository(SessionAutoConfiguration.java:100) atsun.reflect.NativeMethodAccessorImpl.invoke0(NativeMethod) atsun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) atsun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) atjava.lang.reflect.Method.invoke(Method.java:497) atorg.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleElement.invoke(InitDestroyAnnotationBeanPostProcessor.java:366) atorg.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleMetadata.invokeInitMethods(InitDestroyAnnotationBeanPostProcessor.java:311) atorg.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor.postProcessBeforeInitialization(InitDestroyAnnotationBeanPostProcessor.java:134) ...23commonframesomitted
异常栈很长,关键的错误信息是:Nosessionrepositorycouldbeauto-configured,checkyourconfiguration(sessionstoretypeis'null'),这个信息对于我们进行问题分析提供了非常大的指引,我们将重点放在sessionstoretype的功能分析上。
三、问题的解决与分析
在网上搜索之后,我们发现sessionstoretype使用来存放session的存储方式,目前Springboot中只支持Redis方式。由于本应用暂无需将session放入redis的需求,故这里就可以将sessionstoretype设置为none.
这里我们将此配置信息放入application.properites之中:
#default-storeinspringsession.itwillbesetinredisonlyoutside. spring.session.store-type=none
重新启动应用,错误信息消失,我们可以看到了启动正常的信息了:
2017-02-2319:36:17.437INFO10500---[restartedMain]o.s.s.web.DefaultSecurityFilterChain:Creatingfilterchain:OrRequestMatcher[requestMatchers=[Ant[pattern='/css/**'],Ant[pattern='/js/**'],Ant[pattern='/images/**'],Ant[pattern='/webjars/**'],Ant[pattern='/**/favicon.ico'],Ant[pattern='/error']]],[] 2017-02-2319:36:17.823INFO10500---[restartedMain]o.s.s.web.DefaultSecurityFilterChain:Creatingfilterchain:OrRequestMatcher[requestMatchers=[Ant[pattern='/**']]],[org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter@6c7bc3c3,org.springframework.security.web.context.SecurityContextPersistenceFilter@7e251380,org.springframework.security.web.header.HeaderWriterFilter@d2c9b20,org.springframework.security.web.authentication.logout.LogoutFilter@32d5aa81,org.springframework.security.web.authentication.www.BasicAuthenticationFilter@57b802cf,org.springframework.security.web.savedrequest.RequestCacheAwareFilter@6a11f15,org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter@510cb143,org.springframework.security.web.authentication.AnonymousAuthenticationFilter@69e3d43f,org.springframework.security.web.session.SessionManagementFilter@182c322e,org.springframework.security.web.access.ExceptionTranslationFilter@72545397,org.springframework.security.web.access.intercept.FilterSecurityInterceptor@7c8a6e92] 2017-02-2319:36:18.163INFO10500---[restartedMain]o.s.b.d.a.OptionalLiveReloadServer:LiveReloadserverisrunningonport35729 2017-02-2319:36:18.346INFO10500---[restartedMain]o.s.j.e.a.AnnotationMBeanExporter:RegisteringbeansforJMXexposureonstartup 2017-02-2319:36:18.570INFO10500---[restartedMain]s.b.c.e.t.TomcatEmbeddedServletContainer:Tomcatstartedonport(s):8080(http) 2017-02-2319:36:18.588INFO10500---[restartedMain]o.r.data.stock.StockdataApplication:StartedStockdataApplicationin25.393seconds(JVMrunningfor27.444)
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对毛票票的支持。
参考资料:
1.http://stackoverflow.com/questions/38194650/no-session-repository-could-be-auto-configured-check-your-configuration-sessio