dao设计(三),缓存AOP拦截处理的几个思考

2024-08-31 05:38

本文主要是介绍dao设计(三),缓存AOP拦截处理的几个思考,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

当我们发现我们可以用事件通知的方式来巧妙的实现缓存更新时,接下来需要考虑的就是如何用aop拦截方法并设置一些常量配置的问题了。


1. 首先考虑一个问题,例如每个DO实体对应key及缓存时间等配置我们是在启动初始化时全部设置好呢?还是在启动后动态设置? 个人认为,数量小可以在初始化设置,当量比较大或者在运行时很好获取时,运行时获取也是一个不错的选择。在此次缓存框架缓存配置信息我们采用了运行时设置,因为后续可以方便的实时获取并绑定到dao中。

2. 配置信息如何存放?由于配置信息是与DO实体对应的,最优雅的做法就是用注解了,我们关心的配置如下:

配置参数参数意义
cacheTime缓存时间
cacheObjectKey缓存key

在对应的DO类上加上@Table(objCacheTime = xxxx)即可

3. aop拦截到dao层调用方法后,我们仅仅知道方法参数,方法名和返回值,具体的DO实体我们并不知道,要实现获取DO实体类的功能,虽然可以要求所有的dao都以DO实体+Dao字符串的方式实现,但并不友好,可以采用泛型类, XxDaoCacheImpl extends DomainObjectDaoCacheBase这样就可以很方便的获取了具体的DO类,并通过DO类获取上面的注解信息。

4. 配置信息获取后,后续也可能会有需要的地方,由于spring实例化一般是单例的,对于哪些不变的信息,我们可以直接设置为dao的一个变量,第一次获取后就直接赋值。如上面提到的配置,由于当前的MethodInvocation对象后续也会有用到的地方,由于参数等信息不同太多,则可以放到ThreadLocal中。

5. 对于之前提到缓存事件通知,cacheManager是与具体的dao绑定的,在aop拦截到查询方法时,如果没有设置绑定,则我们要根据@Event注解设置对应要绑定关系,Map<String, Set<String>>,key为dao+事件类型,value为方法和参数名称。

这篇关于dao设计(三),缓存AOP拦截处理的几个思考的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


原文地址:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.chinasem.cn/article/1123045

相关文章

Python使用vllm处理多模态数据的预处理技巧

《Python使用vllm处理多模态数据的预处理技巧》本文深入探讨了在Python环境下使用vLLM处理多模态数据的预处理技巧,我们将从基础概念出发,详细讲解文本、图像、音频等多模态数据的预处理方法,... 目录1. 背景介绍1.1 目的和范围1.2 预期读者1.3 文档结构概述1.4 术语表1.4.1 核

Spring Boot @RestControllerAdvice全局异常处理最佳实践

《SpringBoot@RestControllerAdvice全局异常处理最佳实践》本文详解SpringBoot中通过@RestControllerAdvice实现全局异常处理,强调代码复用、统... 目录前言一、为什么要使用全局异常处理?二、核心注解解析1. @RestControllerAdvice2

Springboot如何正确使用AOP问题

《Springboot如何正确使用AOP问题》:本文主要介绍Springboot如何正确使用AOP问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录​一、AOP概念二、切点表达式​execution表达式案例三、AOP通知四、springboot中使用AOP导出

深度解析Spring AOP @Aspect 原理、实战与最佳实践教程

《深度解析SpringAOP@Aspect原理、实战与最佳实践教程》文章系统讲解了SpringAOP核心概念、实现方式及原理,涵盖横切关注点分离、代理机制(JDK/CGLIB)、切入点类型、性能... 目录1. @ASPect 核心概念1.1 AOP 编程范式1.2 @Aspect 关键特性2. 完整代码实

电脑提示xlstat4.dll丢失怎么修复? xlstat4.dll文件丢失处理办法

《电脑提示xlstat4.dll丢失怎么修复?xlstat4.dll文件丢失处理办法》长时间使用电脑,大家多少都会遇到类似dll文件丢失的情况,不过,解决这一问题其实并不复杂,下面我们就来看看xls... 在Windows操作系统中,xlstat4.dll是一个重要的动态链接库文件,通常用于支持各种应用程序

SQL Server数据库死锁处理超详细攻略

《SQLServer数据库死锁处理超详细攻略》SQLServer作为主流数据库管理系统,在高并发场景下可能面临死锁问题,影响系统性能和稳定性,这篇文章主要给大家介绍了关于SQLServer数据库死... 目录一、引言二、查询 Sqlserver 中造成死锁的 SPID三、用内置函数查询执行信息1. sp_w

Java对异常的认识与异常的处理小结

《Java对异常的认识与异常的处理小结》Java程序在运行时可能出现的错误或非正常情况称为异常,下面给大家介绍Java对异常的认识与异常的处理,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参... 目录一、认识异常与异常类型。二、异常的处理三、总结 一、认识异常与异常类型。(1)简单定义-什么是

Golang 日志处理和正则处理的操作方法

《Golang日志处理和正则处理的操作方法》:本文主要介绍Golang日志处理和正则处理的操作方法,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考... 目录1、logx日志处理1.1、logx简介1.2、日志初始化与配置1.3、常用方法1.4、配合defer

springboot加载不到nacos配置中心的配置问题处理

《springboot加载不到nacos配置中心的配置问题处理》:本文主要介绍springboot加载不到nacos配置中心的配置问题处理,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑... 目录springboot加载不到nacos配置中心的配置两种可能Spring Boot 版本Nacos

MyBatis设计SQL返回布尔值(Boolean)的常见方法

《MyBatis设计SQL返回布尔值(Boolean)的常见方法》这篇文章主要为大家详细介绍了MyBatis设计SQL返回布尔值(Boolean)的几种常见方法,文中的示例代码讲解详细,感兴趣的小伙伴... 目录方案一:使用COUNT查询存在性(推荐)方案二:条件表达式直接返回布尔方案三:存在性检查(EXI