【问题标题】:Spring boot2 - Spring sessionSpring boot2 - 春季会议
【发布时间】:2019-06-23 07:12:53
【问题描述】:

我正在尝试使用基于 Spring boot2 的应用程序配置 Spring 会话。

我的 pom.xml,

<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-jdbc</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-security</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-webflux</artifactId>
        </dependency>

会话属性,

spring.session.jdbc.schema=classpath:org/springframework/session/jdbc/schema-mysql.sql
spring.session.store-type=jdbc
spring.session.jdbc.table-name=SPRING_SESSION
spring.session.jdbc.initialize-schema=always

数据源属性,

spring.datasource.driver-class-name=com.mysql.jdbc.Driver
# Connection url for the database
spring.datasource.url = jdbc:mysql://localhost:3306/test?useSSL=false&useUnicode=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC
# Username and password
spring.datasource.username = root
spring.datasource.password = root

spring.datasource.hikari.connection-test-query=select 1
spring.datasource.hikari.connectionTimeout=30000
spring.datasource.hikari.idleTimeout=600000
spring.datasource.hikari.maxLifetime=1800000
spring.datasource.hikari.maximum-pool-size = 10

错误,

Caused by: org.springframework.boot.autoconfigure.session.SessionRepositoryUnavailableException: No session repository could be auto-configured, check your configuration (session store type is 'jdbc')
    at org.springframework.boot.autoconfigure.session.SessionAutoConfiguration$AbstractSessionRepositoryValidator.checkSessionRepository(SessionAutoConfiguration.java:314) ~[spring-boot-autoconfigure-2.2.0.BUILD-SNAPSHOT.jar:2.2.0.BUILD-SNAPSHOT]
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na]
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:na]
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na]
    at java.base/java.lang.reflect.Method.invoke(Method.java:567) ~[na:na]
    at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleElement.invoke(InitDestroyAnnotationBeanPostProcessor.java:389) ~[spring-beans-5.2.0.BUILD-SNAPSHOT.jar:5.2.0.BUILD-SNAPSHOT]
    at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleMetadata.invokeInitMethods(InitDestroyAnnotationBeanPostProcessor.java:333) ~[spring-beans-5.2.0.BUILD-SNAPSHOT.jar:5.2.0.BUILD-SNAPSHOT]
    at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor.postProcessBeforeInitialization(InitDestroyAnnotationBeanPostProcessor.java:157) ~[spring-beans-5.2.0.BUILD-SNAPSHOT.jar:5.2.0.BUILD-SNAPSHOT]
    ... 23 common frames omitted

不确定,我错过了什么......

【问题讨论】:

  • 不要认为 jdbc 自动配置可用于响应式 Web 应用程序 (spring-boot-starter-webflux) boot-features-session

标签: spring-boot spring-session


【解决方案1】:

您还需要配置数据源以供 spring 会话使用。

#application.properties
spring.datasource.url= 
spring.datasource.username= 
spring.datasource.password= 

并在下面添加依赖:

<dependency>
  <groupId>org.springframework.session</groupId>
  <artifactId>spring-session-jdbc</artifactId>
</dependency>

【讨论】:

  • spring-session-code 和 spring-session-jdbc 已经存在。即使添加了上述依赖项,仍然会出现相同的错误。
  • @user1578872 可能与反应性有关,你必须使用 redis 会话
  • 是的,你是对的。它与反应性有关。当我添加 spring-boot-starter-web 时它可以工作。那我应该用redis。
猜你喜欢
  • 2018-11-30
  • 2015-04-11
  • 2011-12-31
  • 2017-03-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多