|
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126 |
- # spring-boot-demo-session
-
- > 此 demo 主要演示了 Spring Boot 如何通过 Spring Session 实现Session共享、重启程序Session不失效。
-
- ## pom.xml
-
- ```xml
- <?xml version="1.0" encoding="UTF-8"?>
- <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
- <modelVersion>4.0.0</modelVersion>
-
- <artifactId>spring-boot-demo-session</artifactId>
- <version>1.0.0-SNAPSHOT</version>
-
- <name>spring-boot-demo-session</name>
- <description>Demo project for Spring Boot</description>
-
- <parent>
- <groupId>com.xkcoding</groupId>
- <artifactId>spring-boot-demo</artifactId>
- <version>1.0.0-SNAPSHOT</version>
- </parent>
-
- <properties>
- <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
- <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
- <java.version>1.8</java.version>
- </properties>
-
- <dependencies>
- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-web</artifactId>
- </dependency>
-
- <dependency>
- <groupId>org.springframework.session</groupId>
- <artifactId>spring-session-data-redis</artifactId>
- </dependency>
-
- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-data-redis</artifactId>
- </dependency>
-
- <!-- 对象池,使用redis时必须引入 -->
- <dependency>
- <groupId>org.apache.commons</groupId>
- <artifactId>commons-pool2</artifactId>
- </dependency>
-
- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-thymeleaf</artifactId>
- </dependency>
-
- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-test</artifactId>
- <scope>test</scope>
- </dependency>
-
- <dependency>
- <groupId>cn.hutool</groupId>
- <artifactId>hutool-all</artifactId>
- </dependency>
- </dependencies>
-
- <build>
- <finalName>spring-boot-demo-session</finalName>
- <plugins>
- <plugin>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-maven-plugin</artifactId>
- </plugin>
- </plugins>
- </build>
-
- </project>
- ```
-
- ## application.yml
-
- ```yaml
- server:
- port: 8080
- servlet:
- context-path: /demo
- spring:
- session:
- store-type: redis
- redis:
- flush-mode: immediate
- namespace: "spring:session"
- redis:
- host: localhost
- port: 6379
- # 连接超时时间(记得添加单位,Duration)
- timeout: 10000ms
- # Redis默认情况下有16个分片,这里配置具体使用的分片
- # database: 0
- lettuce:
- pool:
- # 连接池最大连接数(使用负值表示没有限制) 默认 8
- max-active: 8
- # 连接池最大阻塞等待时间(使用负值表示没有限制) 默认 -1
- max-wait: -1ms
- # 连接池中的最大空闲连接 默认 8
- max-idle: 8
- # 连接池中的最小空闲连接 默认 0
- min-idle: 0
- ```
-
- ## 测试
-
- > 测试 重启程序,Session 不失效的场景
-
- 1. 打开浏览器,访问首页:http://localhost:8080/demo/page/index
- 2. 最开始未登录,所以会跳转到登录页:http://localhost:8080/demo/page/login?redirect=true 然后点击登录按钮
- 3. 登录之后,跳转回首页,此时可以看到首页显示token信息。
- 4. 重启程序。不关闭浏览器,直接刷新首页,此时不跳转到登录页。测试成功!
-
- ## 参考
-
- - Spring Session 官方文档:https://docs.spring.io/spring-session/docs/current/reference/html5/guides/boot-redis.html#updating-dependencies
|