AOP的妙用
一、改代码
自定义注解用于提示该代码已经在AOP中重构了
public @interface ReviseToAop {// 用于记录修改状态String value() default "";
}
使用注解(无意义,只是表名被修改)
@ReviseToAop("修改于:2023/7/30")@GetMapping("/nm/{id}")public String Nm(@PathVariable("id") Integer id,@PathParam("name") String name) throws InterruptedException {log.info("当前未被修改的方法-------");return "当前未被修改的方法 id:"+id;}
aop中重构代码
监控类上的注解用@within(注解包地址)
监控方法上的注解用@annotation(注解地址)
监控方法用execution(权限类型 返回值类型 方法地址(参数类型))
@Around("@annotation(com.example.demo.demos.contorl.ReviseToAop) && execution(String com.example.demo.demos.contorl.Hello.Nm(Integer,String))")public Object ReviseNm(ProceedingJoinPoint joinPoint) throws Throwable {Object[] args = joinPoint.getArgs();log.info("数据被修改----");return "已经被修改: "+args[0]+"name:"+args[1];}
二、自定义注解
设置一个类似@Value注解实现基本类型的数据注入
自定义注解
@Target({ElementType.TYPE, ElementType.FIELD})
@Retention(RetentionPolicy.RUNTIME)
public @interface MyValue {String value() default "";
}
@MyValue需要在@RestController下才能生效
@Around("@within(org.springframework.web.bind.annotation.RestController)")public Object setValue(ProceedingJoinPoint joinPoint) throws Throwable {Object target = joinPoint.getTarget();Field[] declaredFields = target.getClass().getDeclaredFields();for(Field field:declaredFields){field.setAccessible(true);MyValue annotation = field.getAnnotation(MyValue.class);if(!Objects.isNull(annotation)) {field.set(target, annotation.value());log.info("当前对象:{},当前字段:{},当前类名赋值:{}", joinPoint.getTarget().getClass().getName(), field.getName(),annotation.value());}}return joinPoint.proceed(joinPoint.getArgs());}
ProceedingJoinPoint 对象
JoinPoint.getTarget() 获得当前对象joinPoint.getArgs() 获得当前参数
joinPoint.getTarget().getClass() 获得当前对象类的反射
相关文章:
AOP的妙用
一、改代码 自定义注解用于提示该代码已经在AOP中重构了 public interface ReviseToAop {// 用于记录修改状态String value() default ""; }使用注解(无意义,只是表名被修改) ReviseToAop("修改于:2023/7/30&quo…...
CAN转ETHERCAT网关将CAN 总线和 ETHERCAT 网络连接方法
由于好多现场会出现将CAN总线的设备接到EtherCAT网络中,由于协议的不相同,不能直接进行连接,现需一种能同时兼容CAN 总线和ETHERCAT网络的一种设备,由此捷米JM-ECT-CAN 是自主研发的一款 ETHERCAT 从站功能的通讯网关。该产品主要…...
【大数据趋势】7月30日 汇率,恒指期货的大数据趋势概率分析。
1. 数据源头之一 : 汇率变化 从程序模拟趋势来看,美元在持续弱势状态,周线上正在构建一个新的下跌趋势,而且正在反抽过程中,即将完成,如果没有外部干预,会顺势往下。从月线来看,高点逐步降低&a…...
mac使用mvn下载node-sass 会Binary download failed, trying source
m1 上使用nvm 以下node的版本可以直接下载(Binary download,而不是 trying source)而不用切换mac cpu架构 zhiwenwenzhiwenwendeMBP cockpit % nvm install 14.15.5 Downloading and installing node v14.15.5... Downloading https://node…...
【C++】开源:Muduo网络库配置与使用
😏★,:.☆( ̄▽ ̄)/$:.★ 😏 这篇文章主要介绍Muduo网络库配置与使用。 无专精则不能成,无涉猎则不能通。——梁启超 欢迎来到我的博客,一起学习,共同进步。 喜欢的朋友可以关注一下,下…...
VCS ICO - Intelligent Coverage Optimization
ico是vcs提供的用于优化覆盖率的feature;一般用户通过dist solver bofore等约束了变量的随机概率,而ico会在用户约束的基础上,做一些自动“修正”,以此来优化随机激励,提高随机多样性,加速覆盖率收敛&#…...
【分布式系统】分布式系统的8个谬误
网络可靠 对于分布式系统来说,网络、计算、存储是三大基石,系统之间进行拆分隔离之后,那么必定存在网络通讯,而网络是最不可靠的。 不管是从硬件层面还是软件层面来说,网络是不可靠的。(断电、配置错误、ID…...
tinkerCAD案例:25. 量角器 - 测量角度
tinkerCAD案例:25. 量角器 - 测量角度 原文 Now we’re going to make a protractor! A Protractor is one of the most basic, but essential, tools for making measurements. It is, then, surprising that the modern protractor is barely over 200 years ol…...
Flutter 使用texture_rgba_renderer实现桌面端渲染视频
Flutter视频渲染系列 第一章 Android使用Texture渲染视频 第二章 Windows使用Texture渲染视频 第三章 Linux使用Texture渲染视频 第四章 全平台FFICustomPainter渲染视频 第五章 Windows使用Native窗口渲染视频 第六章 桌面端使用texture_rgba_renderer渲染视频(本…...
linux虚拟机开机后桌面显示CentOS-7.5-x86盘片文件,并且无法远程连接虚拟机?
在虚拟机启动后遇到了显示CentOS-7.5-x86光盘片文件的问题,并且无法远程连接到虚拟机,有几个可能的解决方法: 检查虚拟机设置:确保虚拟机的网络适配器已正确配置,并且虚拟机配置的网络选项是桥接模式或 NAT 模式&#…...
【Spring Boot 源码学习】走近 AutoConfigurationImportSelector
AutoConfigurationImportSelector 源码解析 引言主要内容1. ImportSelector 接口2. DeferredImportSelector 接口3. AutoConfigurationImportSelector 功能概述 总结 引言 上篇博文我们了解了 EnableAutoConfiguration 注解,其中真正实现自动配置功能的核心实现者 …...
系统学习Linux-MySQL数据库备份(四)
一、概述 数据库备份是指将数据库中的数据、表格、视图、存储过程、触发器等信息备份到另一个地方,一遍在数据库丢失或损坏时进行恢复,数据库备份是数据库管理中必不可少的一项工作,通过备份可以保护数据库中的数据和业务。 二、数据备份的…...
具身智能controller---RT-1(Robotics Transformer)(中---实验介绍)
6 实验 实验目的是验证以下几个问题: RT-1可以学习大规模指令数据,并且可以在新任务、对象和环境上实现zero-shot的泛化能力?训练好的模型可以进一步混合多种其他数据(比如仿真数据和来自其他机器人的数据)吗?多种方…...
无涯教程-jQuery - load( url, data, callback)方法函数
load(url,data,callback)方法从服务器加载数据,并将返回的HTML放入匹配的元素中。 load( url, [data], [callback] ) - 语法 [selector].load( url, [data], [callback] ) 这是此方法使用的所有参数的描述- url - 包含请求发送到…...
【Shell】Shell编程之免交互
免交互:不需要人为控制就可以完成的自动化操作 自动化运维 Shell脚本和免交互是一个概念,但是两种写法 here document 使用i/o重定向的方式将命令的列表提供给交互式的程序或者命令 是一种标准输入,只能接受正确的指令或命令&#x…...
从Vue2到Vue3【七】——Vue2中响应式原理的实现及其缺陷
系列文章目录 内容链接从Vue2到Vue3【零】Vue3简介从Vue2到Vue3【一】Composition API(第一章)从Vue2到Vue3【二】Composition API(第二章)从Vue2到Vue3【三】Composition API(第三章)从Vue2到Vue3【四】C…...
用C语言实现堆排序算法
1.设计思路 排序的思想将一个数组按递增的顺序进行排序,将数组的第一个位置空下(下标为0),因为会导致子节点和本身同一个结点(i和2i一致),每次堆排序在下标1的位置放上了最大值,然后…...
tauri在github上进行自动更新打包并发版过程,实战操作避坑
从网上找了很多很多的文章,结果还是入坑了,一个问题找了一天才解决: Error A public key has been found, but no private key. Make sure to set TAURI_PRIVATE_KEY environment variable. 596 ELIFECYCLE Command failed with exit code…...
css中flex后文本溢出的问题
原因: 为了给flex item提供一个合理的默认最小尺寸,flex将flex item的min-width 和 min-height属性设置为了auto flex item的默认设置为: min-width: auto 水平flex布局 min-height:auto 垂直flex布局 解决办法&…...
restful接口设计规范[仅供参考]
1. 域名 应该尽量将API部署在专用域名之下。 https://api.example.com 如果确定API很简单,不会有进一步扩展,可以考虑放在主域名下。 https://www.example.org/api/2. 版本(Versioning) 应该将API的版本号放入URL。 http://…...
利用NSGA-III算法优化随机森林模型超参数的实践与可视化展示:从理论到实现的全过程解析
利用NSGA-III算法优化机器学习模型 通过Optuna库实现机器学习模型超参数的优化与可视化,通过精心设计的目标函数,将搜索多个超参数空间,最终确定使模型性能最优的参数组合 为了更直观地展示调参过程,最后利用3D曲面图对调参效果进…...
别再只杀进程了!挖矿病毒XMRig的完整清除与溯源指南(附config.json钱包地址分析)
深度对抗XMRig挖矿病毒:从清除到溯源的实战手册 发现任务管理器里反复出现的xmrig.exe进程?别急着再次点击"结束任务"——这就像用创可贴处理骨折,治标不治本。作为处理过数百起挖矿事件的安全工程师,我总结了一套从内…...
Reloadium数据库回滚功能:SQLAlchemy和Django ORM的10个最佳实践指南
Reloadium数据库回滚功能:SQLAlchemy和Django ORM的10个最佳实践指南 【免费下载链接】reloadium Hot Reloading, Profiling and AI debugging for Python 项目地址: https://gitcode.com/gh_mirrors/re/reloadium Reloadium是一款强大的Python热重载工具&am…...
OpenClaw人人养虾:LiteLLM 统一网关
LiteLLM 是一个开源的 LLM API 统一网关(Unified Gateway),支持 100 模型提供商,提供统一的 OpenAI 兼容 API 格式。 安装 LiteLLM pip 安装 pip install litellm[proxy] Docker 安装 docker run -p 4000:4000 \-e OPENAI_AP…...
2026年03月总结及随笔之又双叒叕漏更
1. 回头看日更坚持了1186天。读《人工智能全球格局:未来趋势与中国位势》更新完成读《2025世界前沿技术发展报告》开更并持续更新中2023年至2025年12月底累计码字3054280字,累计日均码字2786字。2023年至2026年03月底累计码字3334223字,累计日…...
突破QQ音乐格式壁垒:QMCDecode全方位解密方案与跨场景应用指南
突破QQ音乐格式壁垒:QMCDecode全方位解密方案与跨场景应用指南 【免费下载链接】QMCDecode QQ音乐QMC格式转换为普通格式(qmcflac转flac,qmc0,qmc3转mp3, mflac,mflac0等转flac),仅支持macOS,可自动识别到QQ音乐下载目录ÿ…...
基于Qwen3.5-2B的操作系统概念学习助手
基于Qwen3.5-2B的操作系统概念学习助手 1. 为什么需要操作系统学习助手 计算机专业的学生在学习操作系统时,常常面临抽象概念难以理解、理论实践脱节的问题。传统教材中的进程、线程、死锁等概念,如果仅靠文字描述,往往让初学者感到晦涩难懂…...
Ostrakon-VL处理网络协议:从数据包捕获文件可视化网络流量
Ostrakon-VL处理网络协议:从数据包捕获文件可视化网络流量 1. 网络流量分析的痛点与机遇 网络工程师每天都要面对海量的网络数据包,传统的分析工具虽然功能强大,但存在几个明显痛点: 数据量大:一个中等规模企业的日…...
Pixel Couplet Gen入门指南:8-bit UI无障碍访问(色盲模式支持)
Pixel Couplet Gen入门指南:8-bit UI无障碍访问(色盲模式支持) 1. 项目介绍 Pixel Couplet Gen是一款融合传统春节文化与现代像素艺术风格的AI春联生成器。通过ModelScope大模型驱动,它将中国传统的春联创作转化为充满怀旧游戏美…...
Tao-8k处理长文本技术详解:突破上下文窗口限制
Tao-8k处理长文本技术详解:突破上下文窗口限制 你是不是也遇到过这样的烦恼?想把一篇几十页的行业报告丢给AI,让它帮你总结要点,结果它告诉你“文本太长了,我处理不了”。或者,你希望AI能帮你分析一个完整…...
