Spring Session官方介绍及spring框架学习方法

本文详细介绍SpringSession的使用,包括如何在Maven项目中引入spring-session-data-redis依赖,配置Lettuce连接Redis,以及SpringSession的工作原理。通过实例演示了如何存储和管理session数据,包括session的创建时间、过期时间、最后访问时间和session属性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

现在我们开始讲Spring Session,首先进入maven中央仓库,在百度查一下,如何替换成阿里云的仓库就OK了,

我们搜索什么呢,spring-session-data-redis,这里面找到这个包了

然后我们点击这个all,我们要拿的是1.2.0的版本,也就是1.2.0这个version,然后把这个xml复制一下,

<!-- https://mvnrepository.com/artifact/org.springframework.session/spring-session-data-redis -->
<dependency>
    <groupId>org.springframework.session</groupId>
    <artifactId>spring-session-data-redis</artifactId>
    <version>1.2.0.RELEASE</version>
</dependency>

因为我们在nginx上测试是OK的,

可以看到对应的jar包已经下载下了,spring data redis依赖的还有这些,就全部下载下来了,那我们现在来介绍一下

Spring Session,首先从他的官网开始,我们进入spring.io这么一个网址

https://spring.io/

然后上边有一个projects,我们点击他

https://spring.io/projects

往下找,这里面都是Spring的各种项目,有一个Spring Session,我们点击他,那么这个时候呢

https://spring.io/projects/spring-session

就进入到了Spring Session的官网,这里面有一个quick start

在这里面可以下载,有maven的访问方式,我们是使用maven的使用方式,这里面还有各种版本,后面带snap shot就是

快照版本,并不是正式版,我们点开第一个HttpSession and Redis,然后呢来到了这个网址

https://docs.spring.io/spring-session/docs/current/reference/html5/guides/java-redis.html

这网址就是快速启动,这里面就是快速开始的一个介绍,官方提供的是lettuce这种方式,

pom.xml
<dependencies>
	<!-- ... -->

	<dependency>
		<groupId>org.springframework.session</groupId>
		<artifactId>spring-session-data-redis</artifactId>
		<version>2.1.7.RELEASE</version>
		<type>pom</type>
	</dependency>
	<dependency>
		<groupId>io.lettuce</groupId>
		<artifactId>lettuce-core</artifactId>
		<version>5.1.7.RELEASE</version>
	</dependency>
	<dependency>
		<groupId>org.springframework</groupId>
		<artifactId>spring-web</artifactId>
		<version>5.1.8.RELEASE</version>
	</dependency>
</dependencies>

包括往下看,里边用的是LettuceConnectionFactory

@EnableRedisHttpSession 
public class Config {

	@Bean
	public LettuceConnectionFactory connectionFactory() {
		return new LettuceConnectionFactory(); 
	}
}
这里面注意一下

https://docs.spring.io/spring-session/docs/current/reference/html5/guides/java-redis.html

当我们把后面两个删除,只留到html5的时候

https://docs.spring.io/spring-session/docs/current/reference/html5/

就是Spring Session的一个文档,

介绍在1.3里面有哪些东西,例子,还有Http Session的各种集成方式,Redis,JDBC,Mongo,下面还有API文档,

还有Spring Session的一个社区,安全方面的,WebSocket方面的,那其实Spring Session非常强大,我们先看一下

API Documentation,这里面有一个RedisOperationsSessionRepository,Redis操作的一个说明,那这里面用的例子是

Lettuce,有各种参数的一个介绍,存储的详情,HMSET,M是多个,首先这里面会set这么多值

HMSET spring:session:sessions:33fdd1b6-b496-4b33-9f7d-df96679d32fe creationTime 1404360000000 \
	maxInactiveInterval 1800 \
	lastAccessedTime 1404360000000 \
	sessionAttr:attrName someAttrValue \
	sessionAttr2:attrName someAttrValue2
EXPIRE spring:session:sessions:33fdd1b6-b496-4b33-9f7d-df96679d32fe 2100
APPEND spring:session:sessions:expires:33fdd1b6-b496-4b33-9f7d-df96679d32fe ""
EXPIRE spring:session:sessions:expires:33fdd1b6-b496-4b33-9f7d-df96679d32fe 1800
SADD spring:session:expirations:1439245080000 expires:33fdd1b6-b496-4b33-9f7d-df96679d32fe
EXPIRE spring:session:expirations1439245080000 2100

然后再expire一下,相信我说这些命令的时候,官方文档写的是非常清楚的,这里面说了,在这个例子中,这个sessionId呢,

这个session是在什么时候创建的,以毫秒为计时,然后从1970年1月1日的半夜,也就是说,0点开始计算的,到现在的一个

毫秒数,然后session的有效期是1800秒,也就是30分钟,那和我们项目中,默认的时间是一致的,然后是session最后会访问的

时间,也是毫秒数,从1970年1月1号到现在的,然后这个session有两个属性,后面的说明就是说明这两个属性的

In the preceding example, the following statements are true about the session:

The session ID is 33fdd1b6-b496-4b33-9f7d-df96679d32fe.

The session was created at 1404360000000 (in milliseconds since midnight of 1/1/1970 GMT).

The session expires in 1800 seconds (30 minutes).

The session was last accessed at 1404360000000 (in milliseconds since midnight of 1/1/1970 GMT).

The session has two attributes. The first is attrName, with a value of someAttrValue.

The second session attribute is named attrName2, with a value of someAttrValue2.

然后我们看一下Spring Session的一个社区,然后这里有源码,

12.2. Source Code

You can find the source code on GitHub at https://github.com/spring-projects/spring-session/

然后我们点击进入Spring github,进入Spring Session的源码,当然默认master就是1.3.1版本,然后我们点击Branch,

因为我们要引入的是1.2.0,那进入这里之后啊,文档,下面还有各种集成的方式,主要看samples,这个就是spring session

1.2.x的各种例子

https://github.com/spring-projects/spring-session/tree/1.2.x/samples

里边非常全面,包括custom-cookie,因为我们开始实现的就是custom-cookie,里面的值就是JSESSIONID,当然我们不使用

JSESSIONID也是OK的,我们可以使用一个自己生成的UUID,只要记录到我们指定的cookie上就可以了,下边还有各种集成的

方式,包括xml,jdbc,还有mongo,还有rest,下边还有一个websocket

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值