SPRING与设计模式---装饰模式(Decorator)(包装器模式(Wrapper))

本文详细解析了Spring框架中装饰器模式的应用实例,特别是通过SessionRepositoryRequestWrapper对HTTP请求进行功能增强,确保分布式环境下session数据的同步与一致性。
部署运行你感兴趣的模型镜像

SPRING与设计模式---装饰器模式

装饰器模式 允许向一个现有的对象添加新的功能,同时又不改变其结构。装饰者可以在所委托被装饰者的行为之前或之后加上自己的行为,以达到特定的目的(如:功能的增强)。

实际应用案例:springsession框架使用HTTP请求包装类SessionRepositoryRequestWrapper和Session存储过滤器 SessionRepositoryFilter 实现实现分布式session

UML类图:



SessionRepositoryRequestWrapper使用包装模式对原生的request的功能进行增强,可以将session中的数据和分布式数据库进行同步,这样即使当前tomcat崩溃,session中的数据也不会丢失。

用户请求通过代理服务分发到其他tomcat后,request会根据用户的cookie或者head头部信息重新从分布式数据库中将session信息还原。


另外SessionRepositoryRequestWrapper还使用HttpSessionStrategy(使用了策略模式
实现getRequestedSessionId()方法,可以从cookie或者head头部获取sessionId.

SessionRepositoryRequestWrapper使用SessionRepository接口来进行session数据的存储,这也是策略模式。

SessionRepository接口负责Session的CRUD操作

SessionRepositoryRequestWrapper.getSession时调用SessionRepository接口来获取Session。

SessionRepositoryResponseWrapper在onCommit时会调用SessionRepository接口进行save操作。

HttpSessionWrapper实现了原生的HttpSession的接口,在tomcat容器进行session.invalidate()操作时会调用SessionRepository接口进行delete操作。

其他参考文章:
装饰器(Decorator)模式  http://blog.youkuaiyun.com/Xiao_Spring/article/details/68065616

装饰器模式(Decorator Pattern) http://blog.youkuaiyun.com/wwh578867817/article/details/51480441


https://www.cnblogs.com/nick-huang/p/6986824.html 



您可能感兴趣的与本文相关的镜像

Stable-Diffusion-3.5

Stable-Diffusion-3.5

图片生成
Stable-Diffusion

Stable Diffusion 3.5 (SD 3.5) 是由 Stability AI 推出的新一代文本到图像生成模型,相比 3.0 版本,它提升了图像质量、运行速度和硬件效率

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值