前言:
1、实现方式:环绕注解,功能最强大,可以替代方法前注解和方法后注解。学好这一种注解最重要。
2、日志监控埋点需求:业务方法执行前要拿到时间戳,方法执行后要拿到时间戳,最后在切面内,对耗时情况、方法请求入参情况、方法返回结果情况,做一些分析处理,并打印日志,引入ELK或其他监控去分析。此处只展示切面收集方法前后信息打印日志工作。
------先上切面增强业务的接入说明,后面再去看切面实现--------
1、流程泳道图
2、代码接入注解
- 接入说明:
如果有业务侵入要求入参实现基础类(内有统一的必填字段)可用方法1,
如果想通用自定义指定哪个字段是入参请求流水号的情况,直接用方法2
方法3不太推荐,需要改入参类,代码侵入性不好。
方法1(推荐-规范):
方法2(通用):
第一步:
如果无法做到方法1第一步,那请把业务块需要监控的做异常抛出。默认异常当做失败,其他成功。
第二步:
如果无法做到方法1第二步,那请在方法入参上加入一个注解来指定你的请求流水号是哪个字段的值(支持内嵌字段),如下:
第三步:
方法上加上注解.如方法1第三步。
@ThirdResMonitor(trade_code=RouterType.REALTIME_COLLECTION,channel_code= ThirdPartyCode.PAB, uuid = false)
方法3(部分适用):
其中方法2有个弊端就是字段名变化之后,注解如果不跟着改就找不到指定请求流水号了,所以引用方法3解决这个问题;但方法3在入参是三方sdk包的不可更改类的情况下,不适用。
第一步:
如果无法做到方法1第一步,那请把业务块需要监控的做异常抛出。默认异常当做失败,其他成功。
第二步:
如果无法做到方法1第二步,那请在方法入参的类里面某个字段上,加入一个注解@ReName(reName = "requestSeq")来指定你的请求流水号是哪个字段的值,如下:
第三步:
方法上加上注解.如方法1第三步。
@ThirdResMonitor(trade_code=RouterType.REALTIME_COLLECTION,channel_code= ThirdPartyCode.ZH, uuid = false)
------切面增强处理器--------
处理器里会对加了注解的业务方法做增加,此类里按上面三种接入方法,分别应用了三种类型注解,分别是是METHOD、PARAMETER、FIELD。
------应用到三种类型注解定义--------
METHOD
PARAMETER
FIELD
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/bian-cheng-ri-ji/25098.html