使用 JDBC 与 Grails3 集成 Spring Session 时无法获取 SessionRepository

问题描述 投票:0回答:0

我无法使用

Spring Session
Grails-3.3.15
JDBC
应用程序集成,以在
HttpSession
数据库中保留
PostgreSQL
。我在应用程序启动时得到
BeanCreationException

背景:

我在这里参考了官方指南解释了Redis的实施(找不到JDBC的相关指南)并做了下面提到的JDBC实施的更改:

  1. build.gradle:
compile "org.springframework.session:spring-session-jdbc"
compile 'org.springframework.boot:spring-boot-starter-data-jpa'
  1. application.groovy:
spring.datasource.url=System.getenv("DB_URL")
spring.datasource.username=System.getenv("DB_USERNAME")
spring.datasource.password=System.getenv("DB_PASSWORD")
  1. 应用程序.yml
spring:
  session:
    store-type: "jdbc"
    table-name: "SPRING_SESSION"

问题:

这里是异常的堆栈跟踪:

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 'jdbc')
    at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor.postProcessBeforeInitialization(InitDestroyAnnotationBeanPostProcessor.java:137)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyBeanPostProcessorsBeforeInitialization(AbstractAutowireCapableBeanFactory.java:407)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1622)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:553)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:481)
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:312)
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230)
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:308)
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:756)
    at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:867)
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:542)
    at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.refresh(EmbeddedWebApplicationContext.java:123)
    at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:666)
    at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:353)
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:300)
    at grails.boot.GrailsApp.run(GrailsApp.groovy:84)
    at grails.boot.GrailsApp.run(GrailsApp.groovy:393)
    at grails.boot.GrailsApp.run(GrailsApp.groovy:380)
    at grails.boot.GrailsApp$run.call(Unknown Source)
    at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:47)
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:116)
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:136)
    at com.foo.bar.Application.main(Application.groovy:8)

故障排除:

经过进一步调试,我发现在

checkSessionRepository()
org.springframework.boot.autoconfigure.session.SessionRepositoryValidator
sessionRepositoryProvider.getIfAvailable()
返回
null
并且该方法抛出
IllegalArgumentException
.

似乎

SessionRepository
没有配置。 有什么我想念的吗? 任何帮助将不胜感激。

postgresql spring-session grails-3.3.x
© www.soinside.com 2019 - 2024. All rights reserved.