ASM实现AOP,如何传递方法参数 10C

public class Account {
public static void operation(String name) {
System.out.println("operation...");
}
}

public class SecurityChecker {
public static void checkSecurity(String name) {
System.out.println("SecurityChecker.checkSecurity ..."+name);
}
}

visitMethodInsn(INVOKESTATIC, "asm/SecurityChecker", "checkSecurity", "(Ljava/lang/String;)V",false);heckSecurity", "(Ljava/lang/String;)V",false);

通过asm对Account.operation方法增强,把SecurityChecker.checkSecurity(String name) 写入Account.operation方法前 ,那怎么样能把Account.operation方法的name参数传给SecurityChecker.checkSecurity方法

1个回答

通过线程上下文对象ThreadLocal应该可以

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
方法参数的传递
方法参数的传递有两种方式package Qniao; public class QnStudent2 { public static void main(String[] args) { QnStudent2 stu1 = new QnStudent2(); //方式一 值传递 int i = 10; int j = 20; System.out.println("main...
如何传递void*到控件的方法参数?
如何传递void*到控件的方法参数?
springboot aop获得方法参数
因项目需要,要求在方法执行前后打印参数及返回值,上网找了一个可用的,利用aop做的工具,跟大家分享一下。原代码(在方法执行前获得参数):import javassist.*; import javassist.bytecode.CodeAttribute; import javassist.bytecode.LocalVariableAttribute; import javassist.byte...
方法参数的传递过程
在Java中,方法的参数传递都是值传递,在调用方法时,参数会被创建出一个副本,原本的值不会被改变。 我们把基本数据类型有时也称为值类型。 Java中基本类型将值作为参数,按值传递.对象将引用作为参数,按值传递. 如果方法中传入的是基本数据类型,那么原变量的值是不会发生改变的,如果方法中传入的是引用数据类型(即类类型),那么传入方法中,如果对对象的相关属性进行了修改,那么原对象的相关属性也会发
Java中方法参数的传递
Java中方法参数的传递:众所周知,Java语言中只有值传递,看起来很好理解的一句话,那么来看一个例子: 输出结果: 这是一个经典问题,我想说说自己的理解:首先,变量sa和sb分别包含一个字符串对象的引用。不是引用本身,它们是用于存储一个内存地址的变量。Java按值传递,当变量sa和sb传递给opertion()方法,sa和sb的引用的副...
方法参数的传递机制
方法参数的传递机制如下: 参数是基本数据类型时: 形参的改变不会引起实参的改变 参数时引用数据类型时: 形参的改变会引起实参的改变 这个机制一直时烂熟于心的,只不过不知其所以然,,今天在翻阅疯狂讲义的时候找到了答案。 ★ ★ ★: Java里方法的参数传递只有一种方式:值传递。所谓值传递就是...
Java 方法参数的传递
  讲解: 1、基本数据类型做参数 当执行23行时,栈里生成了一块存放小米的区域。 当执行28时,传入了一个name的复制品,方法里调用的name都是复制品 当执行42时,复制的name原来等于小米,现在等于了小红,而方法外的原型name依旧等于小米。 总结:如果传入的name是基本数据类型, 实际传入的是该类型的一个复制品,而原型依旧在 updataName方法外...
jni文件传递方法参数
使用jni从java传递多个参数到c++时,如果是多个参数,当是string类型时,参数之间用;分割 [code="c++"] void sendToAndoridAdmobId(const char* id) { JniMethodInfo methodInfo; if (!JniHelper::getStaticMethodInfo(...
Java方法参数的传递方式
    将参数传递给方法有两种方法。按值传递表示方法接受的是调用者提供的值;按引用调用表示方法接受的是调用者提供的变量地址,注意事项有:1.一个方法不能修改一个基本数据类型的参数(即数值型或布尔型)。2.一个方法可以改变一个对象(数组)参数的状态。3.一个方法不能让对象参数(数组)引用一个新的对象。基本数据类型的传递:将值拷贝给方法,但两个值的的地址值不同;方法在主函数调用弹栈后,拷贝的值不在使用...
关于方法参数的传递问题
有个问题想问一下rnC#方法中参数的传递默认是值传递,但遇到下面个问题有点不解rn class WrapTestrn rn public int num = 1;rnrn rnrn class Programrn rn public static void Test1(WrapTest t)rn rn t.num = 222;rn rnrn public static void Test2(WrapTest t)rn rn WrapTest test = new WrapTest();rn test.num = 333;rn t = test;rn rn static void Main(string[] args)rn rn WrapTest t1 = new WrapTest();rn t1.num = 111;rn Test1(t1);rn Test2(t1);rn Console.WriteLine(t1);rn rn rnrnTest1(t1)后t1.num变为222了rnTest2(t1)后t1.num还是222了rn而t1是一个WrapTest实例的引用变量,那么Test2执行完后t1应该指向Test2中生成的对象,也即t1.num应该为333啊rn不知道上述的理解哪里出问题了,请各位大侠指教,谢谢!
AOP 的利器 ASM 3.0
介绍ASM的简单使用和基本原理,并对AOP的原理进行了详细的描述和总结。
SPRING AOP 修改目标方法参数
1. AOP 切面类 package com.sande.test; import org.aspectj.lang.ProceedingJoinPoint; import org.aspectj.lang.annotation.Around; import org.aspectj.lang.annotation.Aspect; import org.aspectj.lang.annotat...
基于ASM轻量型AOP框架实现
[color=red]Spring AOP 的底层实现是Java Proxy和CGLib,而CGLib的底层实现是ASM. 本示例直接从ASM实现轻量型AOP框架[/color] [size=large][color=red]1.XSD配置文件约束:[/color][/size] [code="java"] ...
字节码实践 -- 使用 ASM 实现 AOP
       ASM 是一个 Java 字节码操控框架。它能被用来动态生成类或者增强既有类的功能。ASM 可以直接产生二进制 class 文件,也可以在类被加载入 Java 虚拟机之前动态改变类行为。Java class 被存储在严格格式定义的 .class 文件里,这些类文件拥有足够的元数据来解析类中的所有元素:类名称、方法、属性以及 Java 字节码(指令)。ASM 从类文件中读入信息后,能...
使用ASM字节码框架实现AOP功能
目前实现AOP最常见,最简单的方法就是Propxy模式,写一个代理类,代理类里面持有真实类的引用。 这种方式实现的AOP,多了一层包装 使用ASM的话,就不需要多一层包装了,它是直接把代码植入到class文件里面(严格上说是字节码中) 相当于在代码里面写AOP,因此要想实现 Aop 的关键是,如何将我们的代码安插到被调用方法的相应位置。 首先加入asm的依赖 org.ow2.
关于Java方法参数的传递问题
public class Example { String str = new String("good"); char[] ch = { 'a', 'b', 'c' }; public void change(String str, char[] ch) { str = "test ok"; ch[0] = 'g'; } public static void main(S
基本数据类型作为方法参数的传递分析
1、来自清华、北大、北航的实战讲师和上市企业骨灰级大咖授课<br />rn<br />rn2、根据企业需求设计课程,引入主流框架<br />rn<br />rn3、由浅入深,0基础缔造垫脚石,妈妈再也不用担心我的学习<br />rn<div>rn <br />rn</div>
Java中方法参数的传递机制
首先我们知道,在Java中的方法是不能独立存在的,调用方法也必须使用类或者对象作为主调者。如果生命方法时包含了形参声明,则在调用方法时,必须给这些形参指定实参数值,调用方法时实际上传给形参的参数值就是实参。 那么在Java中到底实参是如何传入方法的呢?这是由Java方法的参数传输机制来控制的,Java里的方法参数传递为值传递,就是将实际参数的副本传入方法内,而实参本身不受任何影响。 对于8中基...
引用数据类型作为方法参数的传递分析
1、来自清华、北大、北航的实战讲师和上市企业骨灰级大咖授课<br />rn<br />rn2、根据企业需求设计课程,引入主流框架<br />rn<br />rn3、由浅入深,0基础缔造垫脚石,妈妈再也不用担心我的学习<br />rn<div>rn <br />rn</div>
java中的方法参数的传递机制
方法参数的值传递机制 方法被调用时,方法里的参数是以值传递的方式传递的,也就是将实际参数的副本传入方法,而参数本身不受影响,若是基本数据类型,则传递的是参数的副本 若是引用数据类型,则传递实际参数的16进制的地址值
java中方法参数的传递问题
值传递 用 [TOC]来生成目录: 值地址传递 本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦: Markdown和扩展Markdown简洁的语法 代码块高亮 图片链接和图片上传 LaTex数学公式 UML序列图和流程图 离线写博客 导入导出Markdown文件 丰富的快捷键 快捷键 加粗 Ctrl + B 斜体 Ctrl + I 引用...
ASM如何实现动态分配内存?
在C和C++中可以使用malloc和new实现内存的动态分配,那么在回汇编语言中如何实现呢?
AOP 的利器:ASM 3.0 介绍
AOP 的利器:ASM 3.0 介绍 [url]http://www.ibm.com/developerworks/cn/java/j-lo-asm30/index.html[/url]
AOP 的利器:ASM 3_0 介绍
AOP 的利器:ASM 3_0 介绍,很好的书
SPRING AOP 底层实现ASM剖析
<span> </span>1.ASM概述流程<br /><span> </span>2.CLASS结构剖析<br /><span> </span>3.给予ASM增强JVM指令码<br />
用注解和aop结合实现对方法参数的非空校验
@(Spring Boot)[annotation, aop] 用注解和aop结合实现对方法参数的非空校验 猜想 探索,没有实际应用 import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import...
通过AOP获取方法参数名的方法详解
直接看代码:    private void getKey(ProceedingJoinPoint joinPoint){        Object[] arguments = joinPoint.getArgs();//传入的参数                Signature signature = joinPoint.getSignature();//此处joinPoint的实现类是Me...
Spring Aop 修改目标方法参数和返回值
aop 环绕通知修改目标方法参数和返回值
AOP如何实现及实现原理
概述: 最近在开发中遇到了一个刚好可以用AOP实现的例子,就顺便研究了AOP的实现原理,把学习到的东西进行一个总结。文章中用到的编程语言为kotlin,需要的可以在IDEA中直接转为java。 这篇文章将会按照如下目录展开: AOP简介 代码中实现举例 AOP实现原理 部分源码解析 1. AOP简介 相信大家或多或少的了解过AOP,都知道它是面向切面编程,在网上搜索可以找到很多的解释。...
AOP是如何实现的?
Spring中的AOP代理还是离不开Spring的IOC容器,代理的生成,管理及其依赖关系都是由IOC容器负责;Spring默认使用JDK动态代理,在需要代理类而不是代理接口的时候,Spring会自动切换为使用CGLIB代理,不过现在的项目都是面向接口编程,所以JDK动态代理相对来说用的还是多一些。 JDK动态代理(默认使用): 代理类实现InvocationHandler接口,加上反射生...
.NET如何实现AOP
请问有人自己用.NET 写AOP吗,如何实现。
【求教】spring aop 中 @afterreturnning 如何同时取得返回值和方法参数!
单独取得返回值,经测试,可以!rnrn 取得方法参数就有问题了rnrn同时取得就更加不行,老是报错!!rnrn@AfterReturning(rn pointcut="test()",rn returning="retVal")rn public void doAccessCheck(boolean retVal,String username,String password) rn boolean result= retVal;rn if(result==true)rn System.out.println(username+"在"+new Date()+"登录成功 with password:"+password);rn elsern System.out.println(username+"在"+new Date()+"登录失败!with password"+password);rn rn rnrnrn@Pointcut("execution(* com.hnwl.DaoImpl.UserDaoImpl.login(..))")rn public void test()rnrnrn下面是login方法,注意它确实带了参数username:rnrnpublic boolean login(String username, String password) ...rn启动就报错了:rn error at ::0 formal unbound in pointcut rn求解!!
aop拦截action时,如何传递request?
用aop做个登录验证的程序rnspring配置:rn rn rn rn rn rn rn rn rnSecurityHandler.java:rnpublic class SecurityHandler rn private void checkSecurity()rn。。。。request要传到这个方法中rnrn配置文件和程序要怎么写
AOP/iOS中如何实现AOP
什么是AOP AOP:Aspect Oriented Programming,译为面向切面编程。 在不修改源代码的情况下,通过运行时给程序添加统一功能的技术。 我觉得其中有两层涵义: 第一:不修改源代码,即尽可能的解耦。 第二:添加统一的功能,即我们能实现的是添加统一的单一的功能,在某处使用AOP,我们只能实现一项单一的功能。如:日志记录。当然你可以添加多个AOP的模块到项目中,...
Java方法参数的传递机制,值传递?引用传递?
Java方法参数的传递机制,值传递还是引用传递?
C#方法参数不想按顺序传递怎么办?
例如我们定义一个类方法: public double Add(int a,double b) { return a + b; } 一般调用方法: Add(2,5.2);//返回7.2 但是如果不想按顺序来调用时可以这样写: Add(b:5.2,a:2);//返回7.2 ...
Java中方法参数及其传递问题
Java中方法参数及其传递问题 1.基本数据类型传递:指的是在方法调用时,传递的是值的拷贝。对方不管怎么改值,都不影响原来的值。 import java.util.Scanner; public class ScannerTest { public static void main(String args[]){ int x = 5; System...
Java基础知识回顾之数组与方法参数的传递
前面介绍了数组的定义,这里就通过不同的代码实例来介绍数组与方法参数的传递内容。通过对象数组、冒泡等操作来进一步了解数组的操作
Javascript的方法参数是不介意传递多少个参数的!
Javascript的方法参数是不介意传递多少个参数的,也不介意传递的参数类型。即便是方法定义的时候只有1个参数,依然可以传递0个或者2个三个,它都会默默接受的#参数取值: 参数的内部是用一个数组接收的,可以使用arguments对象来访问这个参数数组,arguments[0],arguments[1]来访问对应的第一个第二个参数,arguments.length获取到一共有几个参数
Java中方法参数的传递(值传递和引用传递区别)
  如果参数类型是原始类型,那么传过来的就是这个参数的一个副本,也就是这个原始参数的值,这个跟之前所谈的传值是一样的。如果在函数中改变了副本的值那么不会改变原始的值.   如果参数类型是引用类型,那么传过来的就是这个引用参数的副本,这个副本存放的是参数的地址。如果在函数中没有改变这个副本的地址,而是改变了地址中的值,那么在函数内的改变会影响到传入的参数。如果在函数中改变了副本的地址,如new一个...
相关热词 c# stream 复制 android c# c#监测窗口句柄 c# md5 引用 c# 判断tabtip 自己写个浏览器程序c# c# 字符串变成整数数组 c#语言编程写出一个方法 c# 转盘抽奖 c#选中treeview