- 在《Jaeger开发入门(java版)》一文中,咱们编码实现了span的创建和上报,如下图红框,虽然代码量不大,但是把这些代码写在业务代码中,侵入性太强,很多程序员都不喜欢:
- 今天咱们试试AOP 自定义注解来解决上述问题,如下图,mock是个普通方法,添加了红框中的注解@MySpan,就会创建span然后上报到Jaeger,mock方法的代码没有任何改动:
- 通过上面两图的对比,可见注解非常简洁,接下来就实战上述手段,具体的步骤如下:
- 新建web工程,里面有controller层,调用service层的服务Biz,服务Biz再调用另一个服务ChildBiz
- 创建两个注解MySpan和MyChildSpan
- 创建AOP类SpanAspect,负责处理所有被注解MySpan和MyChildSpan修饰的方法;
- 把注解MySpan和MyChildSpan用在普通的服务Biz和ChildBiz上
- 启动服务,验证功能;
- 本篇实战中的完整源码可在GitHub下载到,地址和链接信息如下表所示(https://github.com/zq2599/blog_demos):
名称 | 链接 | 备注 |
项目主页 | https://github.com/zq2599/blog_demos | 该项目在GitHub上的主页 |
git仓库地址(https) | https://github.com/zq2599/blog_demos.git | 该项目源码的仓库地址,https协议 |
git仓库地址(ssh) | git@github.com:zq2599/blog_demos.git | 该项目源码的仓库地址,ssh协议 |
- 这个git项目中有多个文件夹,本篇的源码在spring-cloud-tutorials文件夹下,如下图红框所示:
- spring-cloud-tutorials文件夹下有多个子工程,本篇的代码是jaeger-annonation-demo,如下图红框所示: