SpringAop的实践应用

news2024/11/23 10:41:42

使用AOP来对前端传来的对象参数进行   BaseDto中属性的填充  这样就不用每次都去UserThreadLocal中拿了再又往BaseDto中放了

@Aspect
@Component
public class  UserAspect {
    @Pointcut("@annotation(org.springframework.web.bind.annotation.RequestMapping) || @annotation(org.springframework.web.bind.annotation.PostMapping) ||  @annotation(org.springframework.web.bind.annotation.GetMapping)")
    public void controllerAspect() {
    }
    @Before("controllerAspect()")
    public void doBefore(JoinPoint joinPoint) {
        if (joinPoint.getArgs() != null && (joinPoint.getArgs()).length != 0) {
            UserInfoDto userInfo = UserThreadLocal.getNotValid();
            if (!Objects.isNull(userInfo) && null != userInfo.getPkUser())
                Arrays.stream(joinPoint.getArgs()).forEach(arg -> {
                    if (arg instanceof BaseDto) {
                        ((BaseDto) arg).setUserId(userInfo.getPkUser());
                        ((BaseDto) arg).setUserName(userInfo.getUserName());
                        ((BaseDto) arg).setCard(userInfo.getCard());
                        ((BaseDto) arg).setEamPkDept(userInfo.getPkDept());
                        ((BaseDto) arg).setEamChineseName(userInfo.getChineseName());
                    }

                    if (arg instanceof DefaultPageDto) {
                        ((DefaultPageDto) arg).setUserId(userInfo.getPkUser());
                        ((DefaultPageDto) arg).setUserName(userInfo.getUserName());
                        ((DefaultPageDto) arg).setCard(userInfo.getCard());
                        ((DefaultPageDto) arg).setEamPkDept(userInfo.getPkDept());
                        ((DefaultPageDto) arg).setEamChineseName(userInfo.getChineseName());
                    }
                });
        }
    }
}

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

测试将被开发、运维替代?我后悔了!?

记得在求职的时候,面试官经常问我:“为什么要选择软件测试工作?”而我也会经常说一堆自己有的没的优势去应付。 工作这么久了,也不再浮躁,静下心来回忆当初选择软件测试工作的历程,也是对自己职业生涯的一次回顾。 …

每日一题162——重塑矩阵

在 MATLAB 中,有一个非常有用的函数 reshape ,它可以将一个 m x n 矩阵重塑为另一个大小不同(r x c)的新矩阵,但保留其原始数据。 给你一个由二维数组 mat 表示的 m x n 矩阵,以及两个正整数 r 和 c &…

Conmi的正确答案——Cordova安装并编译Android应用

系统:debian 11 Cordova版本:11.1.0 Cordova的Android平台:10.1.2 当前安卓最新稳定API:33(Android版本列表) 1、安装npm(cordova是基于nodejs开发的) apt install npm -y2、使用n…

OpenCV中的图像处理3.10(八)直方图-寻找、绘制、分析(掩膜)与均衡化

目录 3.10 OpenCV中的直方图3.10.1 直方图--1:寻找、绘制、分析目标理论寻找直方图绘制直方图掩膜的应用其他资源 3.10.2 直方图--2:直方图均衡化目标理论OpenCV中的直方图均衡化CLAHE(对比度有限的自适应直方图均衡)其他资源 翻译…

【笔试强训选择题】Day16.习题(错题)解析

作者简介:大家好,我是未央; 博客首页:未央.303 系列专栏:笔试强训选择题 每日一句:人的一生,可以有所作为的时机只有一次,那就是现在!!! 文章目录…

Linux Qt6 安装教程及错误解决

在Linux环境,通常为Ubuntu,安装Qt开发环境,与Windows安装相比,还是稍显繁琐,需要多做几个步骤。 这里的Ubuntu版本采用的是ubuntu-22.04.2-desktop-amd64,所以,比旧版本会少很多坑,…

今天面了个字节跳动拿35K出来的测试,真是砂纸擦屁股,给我露了一手啊

今年的春招已经结束,很多小伙伴收获不错,拿到了心仪的 offer。 各大论坛和社区里也看见不少小伙伴慷慨地分享了常见的面试题和八股文,为此咱这里也统一做一次大整理和大归类,这也算是划重点了。 俗话说得好,他山之石…

现在的00后,实在是太卷了,我们这些老油条都想辞职了......

现在的小年轻真的卷得过分了。前段时间我们公司来了个00年的,工作没两年,跳槽到我们公司起薪20K,都快要超过我了。 后来才知道人家是个卷王,从早干到晚就差搬张床到工位睡觉了。 最近和他聊了一次天,原来这位小老弟家…

MathType7公式编辑器新版详细介绍下载安装

由于CSDN这边不能发相关的教程等,若仅用于学习体验,请移步,有能力请支持正版。 wx供重浩:创享日记 对话框发送:mathtype 免费获取MathType-win-zh.exe安装包 它是一款用于数学公式编辑和排版的软件。MathType可以在Mi…

能源革命:可持续能源技术如何改变世界

随着全球气候变化日趋严重,能源转型成为解决气候问题和提高全球能源安全合理性的必要措施之一。可持续能源技术因其对环境的友好性和可再生性而成为了当前热点话题。你认为可持续能源技术真的能改变世界吗?一起来说说你的看法吧! 一、你在工…

实现能效升级 | 基于ACM32 MCU的冰箱压缩机变频方案

概述 冰箱制冷系统中最重要的部件是压缩机。它从吸气管吸入低温低压的制冷剂气体,通过电机运转带动活塞对其进行压缩后,向排气管排出高温高压的制冷剂气体,为整个制冷循环提供源动力。这样就实现了压缩→冷凝→膨胀→蒸发 ( 吸热 ) 的制冷循…

1016. 子串能表示从 1 到 N 数字的二进制串

给定一个二进制字符串 s 和一个正整数 n,如果对于 [1, n] 范围内的每个整数,其二进制表示都是 s 的 子字符串 ,就返回 true,否则返回 false 。 子字符串 是字符串中连续的字符序列。 示例 1: 输入:s &qu…

【C++】new和delete

new是个运算符 使用: new 类型(初始值); malloc和new的区别: 1--new申请空间失败抛出异常,malloc返回空指针 ip(new(nothrow) Int(10))//不想它抛出异常 2--new调用构造函数 3--new可以重…

智慧闹钟

访问【WRITE-BUG数字空间】_[内附完整源码和文档] 首先相对于传闹钟设置闹铃的方式,我想把这款创意闹钟设计成通过光照传感器来实现对闹钟的开启,更有效实现闹钟的自动化、智能化,不过为了防止误触带来闹钟的开启,需要对开启条件…

一起搭建我的世界服务器来实现公网远程联机教程「不需要公网IP」

文章目录 前言1. 安装JAVA2. MCSManager安装3.局域网访问MCSM4.创建我的世界服务器5.局域网联机测试6.安装cpolar内网穿透7. 配置公网访问地址8.远程联机测试9. 配置固定远程联机端口地址9.1 保留一个固定tcp地址9.2 配置固定公网TCP地址9.3 使用固定公网地址远程联机 转载自内…

第十七章_Redis布隆过滤器BloomFilter实战

是什么 一句话 由一个初值都为零的bit数组和多个哈希函数构成,用来快速判断集合中是否存在某个元素 设计思想 目的 减少内存占用 方式 不保存数据信息,只是在内存中做一个是否存在的标记flag 本质就是判断具体数据是否存在于一个大的集合中 备注 布…

好兄弟单身?这不得用python来帮他脱离苦海

明天什么节日 ?明天谁过节 ? 是你吗,还是你的朋友 ?如果是你的话,那咱就帮帮朋友,到年龄的咱就直接相亲呗 赠人玫瑰 手留余香 好人做到底,来让朋友体验体验恋爱的感觉~ 今天就带你们来爬爬相亲…

BoostSearch搜索引擎

今天讲的项目是基于C的Boost库的站内搜索引擎。因为Boost库内没有搜索关键字功能,所以在这里我们来手动实现一个这样的搜索引擎。当用户在输入框输入要查询的关键字后,就会快速查询出相关的 boost 库中的文档,弥补 boost 在线文档没有搜索功能…

C++进阶——mapset的使用

C进阶——map&set的使用 关联式容器 在初阶阶段,我们已经接触过STL中的部分容器,比如:vector、list、deque、forward_list(C11)等,这 些容器统称为序列式容器,因为其底层为线性序列的数据结构,里面存…

chatgpt赋能Python-python2的阶乘

Python2中的阶乘 Python是一种高级编程语言,它可以用来编写各种各样的程序。在Python中,阶乘是一个经常用到的数学概念,由于其强大的计算能力和易学易用的特点,Python成为了计算阶乘的一个很好的工具。在这篇文章中,我…