多语言展示
当前在线:1183今日阅读:190今日分享:11

spring boot session jdbc配置

spring boot项目如何将session持久化到数据库,比如持久化到mysql数据库,下面将详细介绍如何将session持久化到mysql中
工具/原料
1

spring boot框架

2

intellij idea软件

方法/步骤
1

打开intellij idea软件,创建spring boot项目,添加maven依赖,代码如下                                              org.springframework.boot                            spring-boot-starter-web                                                                  org.springframework.boot                            spring-boot-starter-jdbc                                                                  org.springframework.session                            spring-session-jdbc                                                                  mysql                            mysql-connector-java                            runtime                  

2

修改application.properties配置文件,添加如下配置,配置连接池,session设置spring.datasource.url=jdbc:mysql://localhost:3306/testspring.datasource.username=rootspring.datasource.password=rootspring.datasource.driver-class-name=com.mysql.jdbc.Driver#spring.session.jdbc.initialize-schema=embedded#spring.session.jdbc.schema=classpath:org/springframework/session/jdbc/schema-mysql.sql#spring.session.jdbc.table-name=SPRING_SESSION#spring.session.timeout=1logging.level.root = debug

3

根据org/springframework/session/jdbc/schema-mysql.sql中内容,添加数据库表,sql脚本如下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;

4

创建了两张表,spring_session和spring_session_attributes两张表

5

注入一个TaskScheduler,用户清除过期session,代码如下@SpringBootApplicationpublic class SpringBootSessionApplication {          public static void main(String[] args) {                   SpringApplication.run(SpringBootSessionApplication.class, args);         }         @Bean         public TaskScheduler taskScheduler(){             return new ThreadPoolTaskScheduler();    }}

6

添加一个controller类,代码如下,调用HttpSession,@RestController@RequestMapping('/')public class TestController {     @RequestMapping('')    public String aaaa(HttpSession httpSession){        httpSession.setAttribute('user','zuli');        return '111111111';    }}

7

启动应用程序,打开浏览器,访问刚才编写的接口,如下图所示

8

session持久化到数据库了,如下图所示,两张表的内容展示

注意事项
1

不要忘记注入TaskScheduler,用于清除过期session

2

感谢点赞,感谢关注

推荐信息