spring-boot整合spring-session实现mysql的session共享
springboot提供了简单且易用的方式实现session共享。话不多说,直接开始吧,我们以mysql关系型数据库和redis非关系型数据库为例,讲一下如何适用spring-session实现session会话共享。其他数据库也可以参考本章快速实现
mysql方式session共享
依赖
<dependency>
<groupId>org.springframework.session</groupId>
<artifactId>spring-session-jdbc</artifactId>
</dependency>
以及mysql数据库连接库
配置
- 需要导入官方提供的mysql两张默认表,其他数据库也有提供sql文件
- 设置
application.propeties
中增加配置spring.session.store-type=JDBC
,不配置也可以,其他配置如下:
server.servlet.session.timeout =#会话超时。如果未指定持续时间后缀,则将使用秒。
spring.session.jdbc.initialize-schema = embedded#数据库模式初始化模式。
spring.session.jdbc.schema = classpath中:组织/ springframework的/会话/ JDBC / schema- @ @ 平台@ @ .SQL#的路径SQL文件,以用于初始化数据库架构。
spring.session.jdbc.table-name = SPRING_SESSION#用于存储会话的数据库表的名称。
表结构及sql文件
spring-session-jdbc
依赖两张表:
SPRING_SESSION
SPRING_SESSION_ATTRIBUTES
通过官方提供的sql文件导入两张表到数据库即可:
DROP TABLE IF EXISTS SPRING_SESSION_ATTRIBUTES;
DROP TABLE IF EXISTS SPRING_SESSION;
CREATE TABLE SPRING_SESSION (
PRIMARY_ID CHAR(36) NOT NULL,
SESSION_ID CHAR(36) NOT NULL,
CREATION_TIME BIGINT NOT NULL,
LAST_ACCESS_TIME BIGINT NOT NULL,
MAX_INACTIVE_INTERVAL INT NOT NULL,
EXPIRY_TIME BIGINT NOT NULL,
PRINCIPAL_NAME VARCHAR(100),
CONSTRAINT SPRING_SESSION_PK PRIMARY KEY (PRIMARY_ID)
) ENGINE=INNODB ROW_FORMAT=DYNAMIC;
CREATE UNIQUE INDEX SPRING_SESSION_IX1 ON SPRING_SESSION (SESSION_ID);
CREATE INDEX SPRING_SESSION_IX2 ON SPRING_SESSION (EXPIRY_TIME);
CREATE INDEX SPRING_SESSION_IX3 ON SPRING_SESSION (PRINCIPAL_NAME);
CREATE TABLE SPRING_SESSION_ATTRIBUTES (
SESSION_PRIMARY_ID CHAR(36) NOT NULL,
ATTRIBUTE_NAME VARCHAR(200) NOT NULL,
ATTRIBUTE_BYTES BLOB NOT NULL,
CONSTRAINT SPRING_SESSION_ATTRIBUTES_PK PRIMARY KEY (SESSION_PRIMARY_ID, ATTRIBUTE_NAME),
CONSTRAINT SPRING_SESSION_ATTRIBUTES_FK FOREIGN KEY (SESSION_PRIMARY_ID) REFERENCES SPRING_SESSION(PRIMARY_ID) ON DELETE CASCADE
) ENGINE=INNODB ROW_FORMAT=DYNAMIC;
根据配置的mysql数据库连接方式,以上步骤后spring-session就已经正常运行了
redis方式session共享
redis方式共享也很简单,步骤如下
依赖
添加依赖库
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-redis</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.session</groupId>
<artifactId>spring-session-data-redis</artifactId>
</dependency>
配置
- 需要在springboot中启用注解
@EnableRedisHttpSession
-
application.properties
中配置redis
spring.redis.host=localhost
spring.redis.port=6379
以上就可以spring-session就可以正常运行了,是不是很简单。
如果觉得博主写得还不错,欢迎“点赞、收藏、关注”一键三连!