Session共享
在分布式项目中,实现session共享的简单实例
一、创建工程,引入依赖
引入web、spring session以及redis依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<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-test</artifactId>
<scope>test</scope>
</dependency>
项目目录
二、配置application.yml
主要配置与redis相关的属性
spring:
#配置redis
redis:
#配置主机号
host: 127.0.0.1
#配置端口号
port: 6379
#配置密码
password: 123456
#配置数据库索引(默认为0)
database: 1
server:
#设置端口号,方便区分
port: 8080
三、创建一个简单的demo
1、创建一个简单的controller类
为了方便区分每次获取服务的是那个端口号,这里专门把端口号给输出了。
@RestController
public class HelloController {
@Value("${server.port}")
Integer port;
@GetMapping("/set")
public String set(HttpSession session){
session.setAttribute("name","sicnu");
return String.valueOf(port);
}
@GetMapping("/get")
public String get(HttpSession session){
return session.getAttribute("name") +":"+port;
}
}
2、执行打包命令
执行maven生命周期的打包命令
3、在控制台运行打包出来的jar包
在控制台中运行jar包,使用 java -jar 包名
的命令
4、将application.yml的端口号改为8989,使用idea运行
server:
#设置端口号,方便区分
port: 8989
5、访问端口号为8080的实例的localhost:8080/set
6、观察redis
观察redis可以发现session已经存入了。
7、访问端口号为8989的localhost:8989/get
此时可以发现session在两个端口成功的共享了。也可以认为在两个服务器运行成功了,毕竟我暂时没有两台电脑。