我试图通过示例,但无法找到一个有形的,以帮助我了解如何跟踪所有方法调用及其在特定方法中的参数(基于elementMatcher)
我想跟踪的方法是getCustomer并打算使用ByteBuddy来获取getCustomer中调用的所有方法的元数据以及访问传递给每个方法的所有参数
例如。想打印出方法
i)customerRepository.findOne,其中customerId值为参数
ii)以客户价值为参数的log.info
依此类推......带有返回值
public Customer getCustomer(@PathVariable("customerId") Long customerId) {
/* validate customer Id parameter */
if (null == customerId) {
throw new InvalidCustomerRequestException();
}
Customer customer = customerRepository.findOne(customerId);
if (null == customer) {
throw new CustomerNotFoundException();
}
log.info("Customer Data is {}", customer);
try {
dispatchEventToSalesForce(String.format(" Customer %s Logged into SalesForce", customer));
} catch (Exception e) {
log.error("Failed to Dispatch Event to SalesForce . Details {} ", e.getLocalizedMessage());
}
return customer;
}
有人可以帮助我使用Interceptor代码片段,以便我可以按照指示进行操作
答案 0 :(得分:0)
目前,Byte Buddy并不容易做到这一点。您要查找的组件称为MemberSubstitution
,它允许您在方法中替换方法调用和字段访问。您想要做的是添加一个方法调用,捕获当前正在开发的参数作为上述API的附加功能。
或者,如果您知道它们,则可以拦截所有被调用的方法,并浏览堆栈跟踪以验证它们是否从相关方法中调用。