Spring Boot 使用 Redis 共享 Session 代码示例


目录
  • 参考资料
  • 1. 新建 Maven 工程
  • 2. 引入 POM 依赖
  • 3. 编写启动类
  • 4. 编写Controller
  • 5. 添加src/main/resources/application.properties配置文件
  • 6. 验证
    • 6.1 添加端口分别是8080和9090的2个启动配置
    • 6.2 启动2个应用实例
    • 6.3 访问 8080 端口应用创建session
    • 6.4 浏览器访问 9090 端口应用获取session内容
    • 6.5 查看 Redis 是否存放了session信息
    • 6.6 验证结束

参考资料

  • 博客:

1. 新建 Maven 工程

我新建 spring-boot-session-redis maven 工程

2. 引入 POM 依赖


    org.springframework.boot
    spring-boot-starter-web
    2.4.12


    org.springframework.boot
    spring-boot-starter-data-redis
    2.4.12


    org.springframework.session
    spring-session-data-redis
    2.4.6

3. 编写启动类


import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

/**
 * spring boot 使用 redis 共享 session 示例
 *
 */
@SpringBootApplication
public class SpringBootSessionApp 
{
    public static void main( String[] args )
    {
       SpringApplication.run(SpringBootSessionApp.class, args);
    }
}

4. 编写Controller

import javax.servlet.http.HttpSession;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.env.Environment;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * 测试 Controller
 * @author black
 * @date 2022-04-07 16:52:028
 */
@RestController
public class SessionController {

	@Autowired
	private Environment env;
	
	/**
	 * 给 session 设置属性 name = black, port=当前应用端口
	 * @param session
	 * @return
	 */
	@GetMapping("/set")
	public String setSession(HttpSession session) {
		session.setAttribute("name", "black");
		session.setAttribute("port", env.getProperty("server.port"));
		return "success";
	}
	
	/**
	 * 获取 session 中 name 和 port 属性
	 * @param session
	 * @return
	 */
	@GetMapping("/get")
	public String getSession(HttpSession session) {
		return String.valueOf(session.getAttribute("name") + " is set by  port:" + session.getAttribute("port"));
	}
}

5. 添加src/main/resources/application.properties配置文件

# 端口号
server.port=8080
# redis 配置
spring.redis.host=127.0.01
spring.redis.port=6379

6. 验证

6.1 添加端口分别是8080和9090的2个启动配置

eclipse中打开SpringBootSessionApp.java启动类 ,点击右键-"Run As"-"Run Configurations",在弹出对话框选中"Java Application"点击右键-"New Configuration"添加2个配置,分别是: SpringBootSessionApp-8080 和 SpringBootSessionApp-9090.
其中,SpringBootSessionApp-8080 的 VM arguments 添加 "-Dserver.port=8080",SpringBootSessionApp-9090 的 VM arguments 添加"-Dserver.port=9090",如下图:


6.2 启动2个应用实例

  1. 启动 8080 端口实例
    eclipse中打开SpringBootSessionApp.java启动类,,点击右键-"Run As"-"Java Application",选择 6.1 添加的 SpringBootSessionApp-8080启动配置,然后点击OK即可.

  2. 启动 9090 端口实例
    eclipse中打开SpringBootSessionApp.java启动类,,点击右键-"Run As"-"Java Application",选择 6.1 添加的 SpringBootSessionApp-9090启动配置,然后点击OK即可.

6.3 访问 8080 端口应用创建session

访问: http://localhost:8080/set

6.4 浏览器访问 9090 端口应用获取session内容

访问: http://localhost:9090/get

6.5 查看 Redis 是否存放了session信息

6.6 验证结束