反射调用private方法的坑

news2024/11/27 2:44:57

使用反射调用私有方法时,发现空指针异常,无法直接注入导致空指针异常
在这里插入图片描述
加入如下代码后,恢复正常

	if (AopUtils.isCglibProxy(marketSmsTaskService)) {
            // 如果是cglib代理对象,则转为原始对象
            marketSmsTaskService = (MarketSmsTaskServiceImpl) AopProxyUtils.getSingletonTarget(marketSmsTaskService);
        }

在这里插入图片描述

 	@Test
    public void send() throws Exception {
        String thirdUserId = "2022062112933319";
        String thirdMerchantId = "201403172000003706";
        ParseSmsContentInfo parseSmsContentInfo = new ParseSmsContentInfo();
        UserInfo userInfo = new UserInfo();
        userInfo.setThirdUserId(thirdUserId);
        userInfo.setThirdMerchantId(thirdMerchantId);
        parseSmsContentInfo.setUserInfo(userInfo);

        Method sendSms = MarketSmsTaskServiceImpl.class.getDeclaredMethod("sendSms", String.class, ParseSmsContentInfo.class, String.class);
        sendSms.setAccessible(true);
        // 由于cglib类是通过继承代理,无法代理私有方法,因此无法通过原始对象执行方法
        if (AopUtils.isCglibProxy(marketSmsTaskService)) {
            // 如果是cglib代理对象,则转为原始对象
            marketSmsTaskService = (MarketSmsTaskServiceImpl) AopProxyUtils.getSingletonTarget(marketSmsTaskService);
        }
        sendSms.invoke(marketSmsTaskService, thirdUserId, parseSmsContentInfo, "ce shi");
    }

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

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

相关文章

与身边的人有差距,我选择只跟自己比并发展自己的长处!

文章目录 方向一:简述自己的感受方向二:聊聊你想怎么做方向三:如何调整自己的心态 虽然清楚知识需要靠时间沉淀,但在看到自己做不出来的题别人会做,自己写不出的代码别人会写时还是会感到焦虑怎么办? 你是…

链表OJ题

题目一:206反转链表 题目要求: 思路分析: 代码实现: struct ListNode* reverseList(struct ListNode* head){ //n1,n2反转指针 n3链接下一个结点的指针struct ListNode* n1,*n2,*n3;n1 NULL;n2 head;if(n2)//有可能head本身…

CentOS7 启动谷歌浏览器 java+Selenium+chrome+chromedriver

前言:自己想使用该技术实现自动化抓取音乐,目前在window上运行成功,需要在Linux Centos服务上跑,配置上出现了许多问题,特此记录。 参考文档:CentOS7 安装Seleniumchromechromedriverjava_远方丿的博客-CSD…

PLC拉格朗日插值(SCL、ST计算源代码)

插值是对函数进行近似的基本方法,这篇博客主要介绍常用的拉格朗日插值法, Lagrange插值法不太清楚的同学,可以看看数值计算和分析类书籍,网上有很多C语言的拉格朗日插值算法,这里我们主要给出在PLC里利用ST,SCL语言完成拉格朗日插值计算。 1、拉格朗日插值FC 插值法可以…

TSINGSEE青犀视频安防监控视频平台加密机的详细使用与操作步骤

我们在此前的文章中介绍过不少TSINGSEE青犀视频安防监控视频平台关于加密机授权操作及相关疑问解答,感兴趣的用户可以翻阅往期的文章进行了解。由于新用户咨询该方面的问题较多,今天我们再来介绍一下操作步骤。 注意:加密机是依据IP授权&…

第三章-运输层

运输层服务 运输层协议为运行在不同主机上的进程之间提供逻辑通信,即从应用程序角度看两个主机好像直连一样,实际可能相隔万里运输层协议是在端系统上实现的,而不是路由器,为什么这么强调,因为运输层会将应用报文划分…

ctfshow web93-98

web93 打开环境是一个代码审计题目 简单分析就是输入一个变量num,其值不能等于4476与包含字母,但是他的值需要为4476 函数intval作用为获取变量的整数值,第二个参数的意思是进制,默认为10进制。题目参数为0,就根据变…

【数据结构与算法】力扣:完全二叉树的节点个数+平衡二叉树

完全二叉树的节点个数 给你一棵完全二叉树 的根节点 root ,求出该树的节点个数。 完全二叉树的定义如下:在完全二叉树中,除了最底层节点可能没填满外,其余每层节点数都达到最大值,并且最下面一层的节点都集中在该层最…

本地搭建web服务器、个人博客并发布公网访问

文章目录 前言1. 安装套件软件2. 创建网页运行环境 指定网页输出的端口号3. 让WordPress在所需环境中安装并运行 生成网页4. “装修”个人网站5. 将位于本地电脑上的网页发布到公共互联网上 前言 在现代社会,网络已经成为我们生活离不开的必需品,而纷繁…

YOLOv5项目调试与实战

拥有青春的时候 你就要感受它 不要浪费你的黄金时代 把宝贵的内在生命活出来 什么都别错过 一、项目介绍与环境配置 github地址 选择5.0版本的tag,并下载源码 使用Pycharm打开代码 选择解释器,我选择的是之前conda创建的pytorch环境 安装项目所需要用到…

map 比较(两个map的key,value 是否一样)

1. 用equals 比较 public static void main(String[] args) {List<Map<String,Object>> list new ArrayList<>();Map<String,Object> map1 new HashMap<>();map1.put("name","郭");map1.put("objId","1&quo…

Linux jq 命令讲解与实战操作(json字符串解析工具)

文章目录 一、概述二、jq 命令安装三、jq 命令语法与示例详解1&#xff09;基本用法2&#xff09;常用选项3&#xff09;查询和过滤1、选择字段2、过滤3、遍历数组4、组合操作 4&#xff09;修改和创建1、修改字段值&#xff1a;2、创建新字段&#xff1a;3、组合操作&#xff…

视频基础知识简介

视频 由一组图像组成&#xff0c;且图像一般为了方便传输或者减少占用空间而被压缩(如H264,265等格式)&#xff0c;最终在显示设备上进行显示。 图像 图像由像素组成&#xff0c;像素又是由RGB组成&#xff0c;每个点的颜色由红绿蓝进行组合形成新的颜色&#xff1b; 分辨率…

[Flask]SSTI1

根据题目提示&#xff0c;这关应该是基于Python flask的模版注入&#xff0c;进入靶场环境后就是一段字符串&#xff0c;而且没有任何提示&#xff0c;有点难受&#xff0c;主要是没有提示注入点 随机尝试一下咯&#xff0c;首先尝试一下guest&#xff0c;GET传参 但是没有反应…

基于Java+SpringBoot+Vue的篮球论坛系统设计与实现(源码+LW+部署文档等)

博主介绍&#xff1a; 大家好&#xff0c;我是一名在Java圈混迹十余年的程序员&#xff0c;精通Java编程语言&#xff0c;同时也熟练掌握微信小程序、Python和Android等技术&#xff0c;能够为大家提供全方位的技术支持和交流。 我擅长在JavaWeb、SSH、SSM、SpringBoot等框架…

第2章 图像变换

第2章 图像变换 **写得比较粗错&#xff0c;详解后续跟上。**第2章 图像变换2.1 反色变换2.1.1 基本原理2.1.2 源码2.1.3 样例 2.2 线性变换2.2.1 基本原理2.2.2 源码2.2.3 样例加入滚动条 2.3 对数变换2.3.1 基本原理2.3.2 源码2.3.3 样例加入滚动条 2.4 gamma变换2.4.1 基本原…

锐捷VSU技术理论与实验

目录 VSU涉及的相关基础概念 VSU的2种工作模式 VSU的3种设备角色 VSU的4种设备状态 VSU的分裂与合并 VSU建立过程 双主检测 VSU报文转发原理 VSU命令配置 配置VSU 配置双主检测 VSU涉及的相关基础概念 域编号&#xff08;Domain ID&#xff09; Domain ID是VSU的标…

2019年09月 Python(一级)真题解析#中国电子学会#全国青少年软件编程等级考试

一、单选题 第1题 关于Python的编程环境,下列的哪个表述是正确的? A:Python的编程环境是图形化的; B:Python只有一种编程环境ipython; C:Python自带的编程环境是IDLE; D:用windows自带的文本编辑器也可以给Python编程?,并且也可以在该编辑器下运行; 正确答案…

介绍一个.Net远程日志组件

对于软件开发的阶段和正式运行阶段&#xff0c;我们都需要查看日志来诊断出现的问题。不过&#xff0c;在查看日志时需要登录服务器&#xff0c;找到特定的日志文件&#xff0c;再查看其中的内容&#xff0c;这显然不是很方便。 为了解决这个问题&#xff0c;我们可以使用远程…

按轨迹运行

文章目录 import math import timeimport numpy as np import matplotlib.pyplot as pltdef plot_arrow(x, y, yaw, length=5, width=1):dx = length * math.cos(yaw)dy = length * math.sin(yaw)plt.arrow(x, y, dx, dy, head_length=width, head_width=width)plt.plot([x, x …