Administrator
发布于 2023-11-08 / 74 阅读 / 0 评论 / 0 点赞

arthas下,ognl 调用含dto参数的方法?dto对象如何构建?

Arthas 提供了 ognl 命令,用于执行 OGNL 表达式来调用方法,包括含有 DTO 参数的方法。以下是在 Arthas 中使用 ognl 命令的步骤:

连接到目标 Java 进程:首先,使用 as.sh 或 as.bat 启动 Arthas 命令行工具,并连接到目标 Java 进程,方法与上一个回答中描述的一样。

使用 ognl 命令:使用 ognl 命令来执行 OGNL 表达式。您需要构建一个包含 DTO 参数的 OGNL 表达式,然后使用该表达式来调用方法。例如:

less

$ ognl -c 18b4aac2  '#context=@com.zhumeng.springstudy.module.util.SpringContextUtil@getApplicationContext(),#dto=new com.zhumeng.springstudy.module.service.pojo.dto.UserDTO("1","test2", "30",null,null),#context.getBean("userServiceImpl").updateUserById("1",#dto)' -x 2

$ ognl -c 18b4aac2  '#context=@com.zhumeng.springstudy.module.util.SpringContextUtil@getApplicationContext(),#dto=new com.zhumeng.springstudy.module.service.pojo.dto.UserDTO("1","test2", "30",null,null),#dto.set#context.getBean("userServiceImpl").updateUserById("1",#dto)' -x 2

在这个示例中,可以有两种方式,一种是利用全参构造,来创建并赋值给dto,另一种则是先创建dto,然后调用set方法去设置属性

查看结果:Arthas 会执行 OGNL 表达式,并显示调用方法的结果。

请注意,OGNL 表达式的构建方式可能会因应用程序的结构和需求而有所不同。确保您了解 DTO 对象的结构和方法的参数要求,以正确构建 OGNL 表达式。 Arthas 的官方文档和在线教程也提供了更多关于如何使用 ognl 命令的信息。


评论