本文主要跟大家分享了关于Spring Boot报错:No session repository could be auto-configured, check your configuration的解决方法,下面话不多说,来一起看看详细的介绍:
一、环境介绍
JDK 1.8 spring-Boot 1.5.1.RELEASE, STS IDE
二、 问题的提出
创建了一个非常简约的Spring Boot Web Application
,其中使用了Spring-Session,具体的maven依赖如下:
1
2
3
4
|
<dependency>
<groupId>org.springframework.session</groupId>
<artifactId>spring-session</artifactId>
lt;/dependency>
|
在启动过程中,出现了如下错误信息:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
|
Error starting ApplicationContext. To display the auto-configuration report re-run your application with 'debug' enabled.
2017 - 02 - 23 17 : 48 : 10.710 ERROR 29484 --- [ restartedMain] o.s.boot.SpringApplication : Application startup failed
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.boot.autoconfigure.session.SessionAutoConfiguration$SessionRepositoryValidator' : Invocation of init method failed; nested exception is java.lang.IllegalArgumentException: No session repository could be auto-configured, check your configuration (session store type is 'null' )
at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor.postProcessBeforeInitialization(InitDestroyAnnotationBeanPostProcessor.java: 137 )
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyBeanPostProcessorsBeforeInitialization(AbstractAutowireCapableBeanFactory.java: 409 )
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java: 1620 )
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java: 555 )
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java: 483 )
at org.springframework.beans.factory.support.AbstractBeanFactory$ 1 .getObject(AbstractBeanFactory.java: 306 )
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java: 230 )
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java: 302 )
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java: 197 )
at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java: 761 )
at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java: 866 )
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java: 542 )
at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.refresh(EmbeddedWebApplicationContext.java: 122 )
at org.springframework.boot.SpringApplication.refresh(SpringApplication.java: 737 )
at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java: 370 )
at org.springframework.boot.SpringApplication.run(SpringApplication.java: 314 )
at org.springframework.boot.SpringApplication.run(SpringApplication.java: 1162 )
at org.springframework.boot.SpringApplication.run(SpringApplication.java: 1151 )
at org.rosebird.data.stock.StockdataApplication.main(StockdataApplication.java: 10 )
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java: 62 )
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java: 43 )
at java.lang.reflect.Method.invoke(Method.java: 497 )
at org.springframework.boot.devtools.restart.RestartLauncher.run(RestartLauncher.java: 49 )
Caused by: java.lang.IllegalArgumentException: No session repository could be auto-configured, check your configuration (session store type is 'null' )
at org.springframework.util.Assert.notNull(Assert.java: 115 )
at org.springframework.boot.autoconfigure.session.SessionAutoConfiguration$SessionRepositoryValidator.checkSessionRepository(SessionAutoConfiguration.java: 100 )
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java: 62 )
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java: 43 )
at java.lang.reflect.Method.invoke(Method.java: 497 )
at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleElement.invoke(InitDestroyAnnotationBeanPostProcessor.java: 366 )
at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleMetadata.invokeInitMethods(InitDestroyAnnotationBeanPostProcessor.java: 311 )
at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor.postProcessBeforeInitialization(InitDestroyAnnotationBeanPostProcessor.java: 134 )
... 23 common frames omitted
|
异常栈很长,关键的错误信息是:No session repository could be auto-configured, check your configuration (session store type is 'null')
,这个信息对于我们进行问题分析提供了非常大的指引, 我们将重点放在session store type的功能分析上。
三、问题的解决与分析
在网上搜索之后,我们发现session store type使用来存放session的存储方式,目前Spring boot中只支持Redis方式。 由于本应用暂无需将session放入redis的需求,故这里就可以将session store type
设置为none.
这里我们将此配置信息放入application.properites之中:
1
2
|
# default -store in spring session. it will be set in redis only outside.
spring.session.store-type=none
|
重新启动应用,错误信息消失, 我们可以看到了启动正常的信息了:
1
2
3
4
5
6
|
2017 - 02 - 23 19 : 36 : 17.437 INFO 10500 --- [ restartedMain] o.s.s.web.DefaultSecurityFilterChain : Creating filter chain: OrRequestMatcher [requestMatchers=[Ant [pattern= '/css/**' ], Ant [pattern= '/js/**' ], Ant [pattern= '/images/**' ], Ant [pattern= '/webjars/**' ], Ant [pattern= '/**/favicon.ico' ], Ant [pattern= '/error' ]]], []
2017 - 02 - 23 19 : 36 : 17.823 INFO 10500 --- [ restartedMain] o.s.s.web.DefaultSecurityFilterChain : Creating filter chain: 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 - 23 19 : 36 : 18.163 INFO 10500 --- [ restartedMain] o.s.b.d.a.OptionalLiveReloadServer : LiveReload server is running on port 35729
2017 - 02 - 23 19 : 36 : 18.346 INFO 10500 --- [ restartedMain] o.s.j.e.a.AnnotationMBeanExporter : Registering beans for JMX exposure on startup
2017 - 02 - 23 19 : 36 : 18.570 INFO 10500 --- [ restartedMain] s.b.c.e.t.TomcatEmbeddedServletContainer : Tomcat started on port(s): 8080 (http)
2017 - 02 - 23 19 : 36 : 18.588 INFO 10500 --- [ restartedMain] o.r.data.stock.StockdataApplication : Started StockdataApplication in 25.393 seconds (JVM running for 27.444 )
|
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对服务器之家的支持。
参考资料:
1. http://*.com/questions/38194650/no-session-repository-could-be-auto-configured-check-your-configuration-sessio
原文链接:http://blog.csdn.net/blueheart20/article/details/56677338