拦截方法:

1、普通方法  @OnMethod(clazz="", method="")

2、构造函数@OnMethod(claszz="", method="<init>")

3、拦截同名函数,用参数区分

一、拦截构造函数

1、创建接口

    @RequestMapping("/constructor")
public User constructor(User user){
return user;
}

  

2、测试接口

http://127.0.0.1:8080/monitor_tuning/ch4/constructor?id=1&name=nick

3、查看进程

4、创建btrace脚本,运行btrace脚本

package com.example.monitor_tuning.chapter4;

import com.sun.btrace.AnyType;
import com.sun.btrace.BTraceUtils;
import com.sun.btrace.annotations.*; /**
* 拦截构造函数.
*/
@BTrace
public class PrintConstructor { /*要拦截哪个类,<init>w为构造函数,*/
@OnMethod(
clazz = "com.example.monitor_tuning.chapter2.User",
method="<init>"
)
/*ProbeClassName 方法类名; ProbeMethodName 方法名 ; AnyType[] 构造函数参数*/
public static void anyRead(@ProbeClassName String pcn, @ProbeMethodName String pmn, AnyType[] args)
{
BTraceUtils.printArray(args);
BTraceUtils.println(pcn + "," + pmn);
BTraceUtils.println();
}
}

  运行btrace脚本

显示结果

二、拦截同名函数

1、创建两个同名的方法

    @RequestMapping("/same1")
public String same(@RequestParam("name")String name){
return "hello," + name;
} @RequestMapping("/same2")
public String same(@RequestParam("id")int id, @RequestParam("name")String name){
return "hello," + name + " id: " + id;
}

  

2、创建btrace脚本

通过参数个数,和顺序进行匹配。

package com.example.monitor_tuning.chapter4;

import com.sun.btrace.BTraceUtils;
import com.sun.btrace.annotations.*; /**
* 监控同名方法
*/ @BTrace
public class PrintSame { @OnMethod(
clazz = "com.example.monitor_tuning.chapter4.Ch4Controller",
method="same"
) public static void anyRead(@ProbeClassName String pcn, @ProbeMethodName String pmn, int id, String name)
{
BTraceUtils.println(pcn + "," + pmn + "," + name + "," + id);
BTraceUtils.println();
} }

  

3、运行btrace脚本

调用接口

http://127.0.0.1:8080/monitor_tuning/ch4/same2?name=nick&id=2

最终显示结果见上图

Btrace 拦截构造函数,同名函数的更多相关文章

  1. 23.C++- 继承的多种方式、显示调用父类构造函数、父子之间的同名函数、virtual虚函数

     上章链接: 22.C++- 继承与组合,protected访问级别 继承方式 继承方式位于定义子类的”:”后面,比如: class Line : public Object //继承方式是publi ...

  2. Qt 学习之路 2(19):事件的接受与忽略(当重写事件回调函数时,时刻注意是否需要通过调用父类的同名函数来确保原有实现仍能进行!有好几个例子。为什么要这么做?而不是自己去手动调用这两个函数呢?因为我们无法确认父类中的这个处理函数有没有额外的操作)

    版本: 2012-09-29 2013-04-23 更新有关accept()和ignore()函数的相关内容. 2013-12-02 增加有关accept()和ignore()函数的示例. 上一章我们 ...

  3. 编译器如何处理C++不同类中同名函数(参数类型个数都相同)

    转载请注明出处,版权归作者所有 lyzaily@126.com yanzhong.lee 作者按: 从这篇文章中,我们主要会认识到一下几点: 一.不类中的特征标相同的同名函数,它们是不同的函数,原因就 ...

  4. (转) C++中基类和派生类之间的同名函数的重载问题

    下面有关派生类与基类中存在同名函数 fn: class A { public: void fn() {} void fn(int a) {} }; class B : public A { publi ...

  5. JS特殊函数(Function()构造函数、函数直接量)区别介绍

    函数定义 函数是由这样的方式进行声明的:关键字 function.函数名.一组参数,以及置于括号中的待执行代码. 函数的构造语法有这三种: 1.function functionName(arg0, ...

  6. C++ 学习笔记 (六) 继承- 子类与父类有同名函数,变量

    学习了类的继承,今天说一下当父类与子类中有同名函数和变量时那么程序将怎么执行.首先明确当基类和子类有同名函数或者变量时,子类依然从父类继承. 举例说明: 例程说明: 父类和子类有同名的成员 data: ...

  7. Function()构造函数与函数直接量

    Function()构造函数与函数直接量 制作人:全心全意 在JavaScript中,除了可使用基本的function语句定义函数之外,还可以使用另外两种方式来定义,即使用Function()构造函数 ...

  8. 【java&c++】父子类中同名函数的覆盖问题

    java和c++两门语言对于父子类中同名函数具有不同的处理方式. 先上两段代码: C++: class Basic { public: void test(string i){ cout <&l ...

  9. C++不同类中的特征标相同的同名函数

    转载请注明出处,版权归作者所有 lyzaily@126.com yanzhong.lee        作者按:                   从这篇文章中,我们主要会认识到一下几点:      ...

随机推荐

  1. shell练习题3

    需求如下: 请按照这样的日期格式(xxxx-xx-xx)每天生成一个文件,例如今天生成的文件为2018-10-19.log, 并把磁盘的使用情况入到这个文件,(不需要写cron,写脚本即可) 参考解答 ...

  2. 非关系数据库一Memcached

    第三十四课 非关系数据库一Memcached 目录 一.nosql介绍 二.memrcached介绍 三.安装memcached 四.查看memcachedq状态 五.memcached命令行 六.m ...

  3. Input禁用文本框

    <input type="text" readonly="readonly" /> readonly:只读属性:

  4. python基础15下_迭代器_生成器

    print(dir([])) #告诉我列表拥有的所有方法 # 双下方法 # print([1].__add__([2])) print([1]+[2]) ret = set(dir([]))& ...

  5. 东芝L10安装Centos5.5

    为什么安装5.5:因为高版本的需要PAE设定但是老电脑不支持,偶又不想重新编译内核,so... 1.  安装之前需要把电脑格式化(我是整机安装Linux),否则会报not enough space l ...

  6. nginx——配置 Nginx 防盗链

    什么是防盗链:简单地说,就是某些不法网站未经许可,通过在其自身网站程序里非法调用其他网站的资源,然后在自己的网站上显示这些调用的资源,使得被盗链的那一端消耗带宽资源 (1) 根据 HTTP refer ...

  7. JS 最简单数组去重

    ,,,,])) // 再把set转变成array console.log(newArr) // [1,2,3,4]

  8. 第二次scrum冲刺

    一.第二次冲刺任务         Scrum是在已有的基础上实现读者查询书籍的功能. 二.用户故事         用户输入账号.密码   用户输入需要查询的书籍   系统显示用户输入的信息的详细信 ...

  9. 第七届蓝桥杯大赛个人赛决赛(软件类C语言B组)第一题:一步之遥

      这题好多人用爆搜/bfs来做,然而这题可用exgcd(扩展欧几里得)做,而且很简便. 先附原题: 一步之遥 从昏迷中醒来,小明发现自己被关在X星球的废矿车里. 矿车停在平直的废弃的轨道上. 他的面 ...

  10. Red Hat Enterprise 7.5 安装后无法进入图形界面 This system is not registered with an entitlement server. You can use subscription-manager to register.

    This system is not registered with an entitlement server. You can use subscription-manager to regist ...