添加依赖
首先,你需要在 pom.xml
中添加 Redis 和 Spring Session 的依赖:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.session</groupId>
<artifactId>spring-session-data-redis</artifactId>
</dependency>
配置 Redis
在 application.properties
或 application.yml
中配置 Redis 的连接信息:
# application.properties
spring.redis.host=localhost
spring.redis.port=6379
spring.redis.password=yourpassword # 如果没有密码可以不加
启用 Spring Session
在你的 Spring Boot 应用主类上添加 @EnableRedisHttpSession
注解,以启用 Redis 存储的 HTTP Session:
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.session.data.redis.config.annotation.web.http.EnableRedisHttpSession;
@SpringBootApplication
@EnableRedisHttpSession
public class YourApplication {
public static void main(String[] args) {
SpringApplication.run(YourApplication.class, args);
}
}
使用 Session
在你的 Controller 中,你可以直接使用 HttpSession
来存储和获取 Session 数据:
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import javax.servlet.http.HttpSession;
@RestController
public class SessionController {
@GetMapping("/setSession")
public String setSession(@RequestParam String value, HttpSession session) {
session.setAttribute("myKey", value);
return "Session value set!";
}
@GetMapping("/getSession")
public String getSession(HttpSession session) {
return (String) session.getAttribute("myKey");
}
}
配置Session的过期时间
spring:
session:
timeout: 31536000
store-type: redis
server:
servlet:
session:
cookie:
max-age: 31536000