关于日常业务中常见公共字段的处理方法

  • 1 概述操作
  • 2 测试

在日常的业务处理中, 新增或修改等常见业务, 经常对一些与业务无关的常用字段需要进行赋值和更新,为了更好的方便的进行代码开发, 可以采用切面的方式,将其统一起来,简化基础代码的开发,更有利于项目的规范和代码的维护

1 概述操作

搭建一个普通的Spring Boot项目, 能正常启动.

User类

@Data
public class User{// idprivate String id; // 姓名private String name; // 创建人private String crtUser; // 创建时间private Date crtTime; // 更新人private String updUser; // 更新时间private Date updTime; }

Create

@Target(ElementType.METHOD) // 适用于方法上
@Retention(RetentionPolicy.RUNTIME) // 适用在运行时
@Documented //  是java 在生成文档,是否显示注解的开关 (加上则有)
public @interface Create {}

Update

@Target(ElementType.METHOD) // 适用于方法上
@Retention(RetentionPolicy.RUNTIME) // 适用在运行时
@Documented //  是java 在生成文档,是否显示注解的开关 (加上则有)
public @interface Update {}

切面解析类

@Component
@Aspect
@Slf4j
public class ObjectAspect {// idprivate String ID = "id";// 创建人private String CRT_USER = "crtUser";// 创建时间private String CRT_TIME = "crtTime";// 更新时间private String UPD_TIME = "updTime";// 更新人private String UPD_USER = "updUser";// 添加切点, 关联注解, 多个注解 使用加号拼加 和 ||@Pointcut("@annotation(com.cf.easyexcel.annotation.Create)" +"|| @annotation(com.cf.easyexcel.annotation.Update)")public void pointCut() {}@Before("pointCut()")public void around(JoinPoint joinPoint) {MethodSignature signature = (MethodSignature) joinPoint.getSignature();Method method = signature.getMethod();Create create = method.getAnnotation(Create.class);Update update = method.getAnnotation(Update.class);if (create != null) {this.create(joinPoint);}if (update != null) {this.update(joinPoint);}}/*** 对象更新时添加属性*/private void update(JoinPoint joinPoint) {Object[] args = joinPoint.getArgs();if (args != null && args.length > 0) {Object arg = args[0];// 获取系统上下文对象 获取用户名String userName = "xXX";// 获取当前日期Date date = new Date();// 修改人属性try {Field updUser = arg.getClass().getDeclaredField(UPD_USER);updUser.setAccessible(true);updUser.set(arg, userName);} catch (NoSuchFieldException | IllegalAccessException e) {log.info("{} 属性赋值错误  ", UPD_USER);}// 修改时间属性try {Field updTime = arg.getClass().getDeclaredField(UPD_TIME);updTime.setAccessible(true);updTime.set(arg, date);} catch (NoSuchFieldException | IllegalAccessException e) {log.info("{} 属性赋值错误  ", UPD_TIME);}}}/*** 对象创建前添加属性*/private void create(JoinPoint joinPoint) {Object[] args = joinPoint.getArgs();if (args != null && args.length > 0) {Object arg = args[0];// 获取系统上下文对象 获取用户名String userName = "xXX";// 获取当前日期Date date = new Date();// id属性String uuid = "adbasdfsdfs";try {Field id = arg.getClass().getDeclaredField(ID);id.setAccessible(true);if (id.get(arg) == null || "".equals(id.get(arg))) {id.set(arg, uuid);}} catch (NoSuchFieldException | IllegalAccessException e) {log.info("{} 属性赋值错误  ", ID);}// 创建人属性try {Field crtUser = arg.getClass().getDeclaredField(CRT_USER);crtUser.setAccessible(true);crtUser.set(arg, userName);} catch (NoSuchFieldException | IllegalAccessException e) {log.info("{} 属性赋值错误  ", CRT_USER);}// 创建时间属性try {Field crtTime = arg.getClass().getDeclaredField(CRT_TIME);crtTime.setAccessible(true);crtTime.set(arg, date);} catch (NoSuchFieldException | IllegalAccessException e) {log.info("{} 属性赋值错误  ", CRT_TIME);}}}}

Controller类

@RestController
@RequestMapping("/test")
@Slf4j
public class EasyExcelController {@Create@PostMapping("/add")public void add(@RequestBody User user) throws IOException {String id = user.getId();log.info("初始化对象为 add = {}", user);}@Update@PostMapping("/update")public void update(@RequestBody User user) throws IOException {String id = user.getId();log.info("初始化对象为 update = {}", user);}
}

2 测试

本地启动服务,使用postman进行测试.

create测试

本地访问:

http:localhost:8080/test/add

运行结果:

初始化对象为 add = User(id=adbasdfsdfs, name=null, crtUser=xXX, crtTime=Thu Oct 13 20:21:38 CST 2022, updTime=null, updUser=null)

update测试

本地访问:

http:localhost:8080/test/update

运行结果:

初始化对象为 update = User(id=null, name=null, crtUser=null, crtTime=null, updTime=Thu Oct 13 20:21:38 CST 2022, updUser=xXX)

关于日常业务中常见公共字段的处理方法相关推荐

  1. 【逻辑漏洞】业务中常见的漏洞

    全文内容来自陈晓光.胡兵.张作峰<web攻防之业务安全实战指南>,为本人阅读时摘取的学习笔记,特此说明. [逻辑漏洞]业务中常见的漏洞 0x00(理论部分) 业务风险点识别 一.业务环节存 ...

  2. 跨境数据传输是日常业务中经常且至关重要的组成部分

    跨境数据传输是日常业务中经常且至关重要的组成部分.在过去的20年中,由于全球通信网络和业务流程的发展,全球数据流的模式已迅速发展.随着数据从数据中心移到数据中心和/或跨边界移动,安全漏洞已成为切实的风 ...

  3. 详解阿里巴巴1688日常业务中的榜单算法

    导读:本文详解阿里巴巴1688日常业务中的榜单算法. 作者:阿里集团 新零售技术事业群 CBU技术部 来源:大数据DT(ID:hzdashuju) 在1688日常的业务场景中,榜单(如图6-14所示) ...

  4. 不动产测绘数据入库_不动产测绘中常见的问题及处理方法

    不动产测绘中常见的问题及处理方法 发布时间:2017-07-28 15:56:00 点击: 近年来,由于我国经济飞速发展,随着物权法的颁布,不动产统一登记制度的实施.社会对不动产产权越来越重视,不动产 ...

  5. 机器学习中常见的过拟合解决方法

    机器学习中常见的过拟合解决方法 参考文章: (1)机器学习中常见的过拟合解决方法 (2)https://www.cnblogs.com/jiangxinyang/p/9281107.html 备忘一下 ...

  6. Python之pandas:pandas中常见的数据类型转换四大方法以及遇到的一些坑之详细攻略

    Python之pandas:pandas中常见的数据类型转换四大方法以及遇到的一些坑之详细攻略 目录 pandas中常见的数据类型转换方法 T1.读取时直接转换数据类型 T2.采用astype

  7. Java中的length字段和length()方法

    本文主要讲述Java中的length字段和length()方法,有需要的朋友可以参考下,更多Java教程知识,请登陆疯狂软件教育官网. 首先,你能快速回答下面的问题吗? 如果没有IDE(集成开发环境) ...

  8. 大华视频服务器系统日志怎么看,日常工作中查看工控机Windows日志的方法

    原标题:日常工作中查看工控机Windows日志的方法 工控机Windows日志位于工控机管理的事件查看器中,主要是用于存储来自应用程序以及整个系统的文件.一般可以分为应用程序日志.安全日志.系统日志这 ...

  9. 硒鼓加粉过程中常见缺陷对照表及解决方法!

    硒鼓加粉过程中常见缺陷对照表及解决方法! 1.问题:底灰 原因:低湿高温;PCR(充电辊)缺陷;磁辊护套及涂层缺陷;PCR或电晕电接触点缺陷;OPC(感光鼓)缺陷;不良碳粉;高压电源不良. 解决方法: ...

最新文章

  1. Oracle PL/SQL之令人不解的提示(nls_date_format)
  2. Wireshark的https代理抓包(whistle中间人代理)
  3. 物联网的全球可用性如何带来新的商机?
  4. Android 4.0 截屏(Screenshot)代码流程小结
  5. 鸿蒙系统适配机型_小米手机系统软件部总监公布小米各机型安卓P适配计划
  6. 全志A33-ARM linux开机进入uboot命令行
  7. postman接口自动化
  8. iOS 直播推流 - 搭建基于RTMP的本地Nginx服务器
  9. java怎么对作者名排序_Java 对象排序详解
  10. volley三种基本请求图片的方式与Lru的基本使用:正常的加载+含有Lru缓存的加载+Volley控件networkImageview的使用...
  11. android开发中的ANR异常
  12. STM32的ucgui移植
  13. 西北师范大学计算机科学与工程学院导师,西北师范大学计算机科学与工程学院导师简介-陈旺虎...
  14. 阳光点歌系统服务器说明书,天行阳光机顶盒点歌系统安装及配置说明
  15. 小学生计算机兴趣班名字,小学生网名大全
  16. const const
  17. 小程序业务域名配置如何将文件放置在域名根目录说明
  18. 前缀和(即数组前n项和的求法)
  19. 小样本学习及其在美团场景中的应用
  20. noise2noise学习与修改

热门文章

  1. songtaste音乐列表
  2. CentOS-用户的管理
  3. c语言编译英语翻译器,【图片】【C语言】【windows】---在线翻译器【erbi_lucifer吧】_百度贴吧...
  4. SICK LMS111激光雷达的使用
  5. php代码缩进,PHPStorm PHP代码缩进
  6. 【DBN分类】基于DBN实现变压器故障诊断附matlab代码
  7. 2022年全球市场电视遥控器总体规模、主要生产商、主要地区、产品和应用细分研究报告
  8. R中并行计算-多线程运行
  9. FLASK (CURRENCY)汇率换算api JSON数据读取显示实现
  10. 完成AK4191+AK4499EX的DSD1024音乐硬解