spring boot session jdbc配置
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>

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

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,代码如下
@SpringBootApplication
public 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持久化到数据库了,如下图所示,两张表的内容展示

