spring boot session jdbc配置

2025-10-10 21:22:06

1、打开intellij idea软件,创建spring boot项目,添加maven依赖,代码如下

                  <dependency>

                            <groupId>org.springframework.boot</groupId>

                            <artifactId>spring-boot-starter-web</artifactId>

                   </dependency>

                   <dependency>

                            <groupId>org.springframework.boot</groupId>

                            <artifactId>spring-boot-starter-jdbc</artifactId>

                   </dependency>

                   <dependency>

                            <groupId>org.springframework.session</groupId>

                            <artifactId>spring-session-jdbc</artifactId>

                   </dependency>

                   <dependency>

                            <groupId>mysql</groupId>

                            <artifactId>mysql-connector-java</artifactId>

                            <scope>runtime</scope>

                   </dependency>

spring boot session jdbc配置

2、修改application.properties配置文件,添加如下配置,配置连接池,session设置

spring.datasource.url=jdbc:mysql://localhost:3306/test

spring.datasource.username=root

spring.datasource.password=root

spring.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=1

logging.level.root = debug

spring boot session jdbc配置

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;

spring boot session jdbc配置

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

spring boot session jdbc配置

5、注入一个TaskScheduler,用户清除过期session,代码如下

@SpringBootApplication

public class SpringBootSessionApplication {

         public static void main(String[] args) {

                   SpringApplication.run(SpringBootSessionApplication.class, args);

         }

         @Bean

         public TaskScheduler taskScheduler(){

             return new ThreadPoolTaskScheduler();

    }

}

spring boot session jdbc配置

6、添加一个controller类,代码如下,调用HttpSession,

@RestController

@RequestMapping("/")

public class TestController {

    @RequestMapping("")

    public String aaaa(HttpSession httpSession){

        httpSession.setAttribute("user","zuli");

        return "111111111";

    }

}

spring boot session jdbc配置

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

spring boot session jdbc配置

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

spring boot session jdbc配置

spring boot session jdbc配置

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢