基于SpringAOP开发的方法调用链分析框架

新人熟悉项目必备工具!基于SpringAOP开发的一款方法调用链分析插件,简单到只须要一个注解,异步非阻塞,完美嵌入Spring Cloud、Dubbo项目!不再用担忧搞不懂项目!git

不少新人进入一家新公司后,最头疼的就是如何快速了解公司的业务和项目架构。github

由于文档不多,没有文档,或者是文档严重落伍, 根本无法看;若是你碰到一个特别热心的老员工,事无巨细地给你讲,随时在你身边答疑解惑, 那简直是天大的好运气, 现实是你们都很忙,没人给你讲解。web

很快就要深刻项目作开发了,怎么办呢?算法

我在加入新公司后,就遇到了悲催的状况。因而,我就作了这款可视化流程分析插件!帮助更多入职新人快速熟悉业务。spring

演示网址:http://116.85.23.6:8521/projecttree数据库

Maven

<dependency>
  <groupId>cn.yueshutong</groupId>
  <artifactId>spring-project-tree</artifactId>
  <version>0.0.5.RELEASE</version>
</dependency>

Spring Boot安装

若是你的项目是Spring Boot,那么使用会很是简单,只须要一个注解便可。json

@EnableProjectTree(value = "")注解参数为pointcut表达式,完整代码以下:安全

@SpringBootApplication
@EnableProjectTree("execution(* com.example.springboot.demo..*(..))")
public class SpringbootApplication {

    public static void main(String[] args) {
        SpringApplication.run(SpringbootApplication.class, args);
    }

}

注:重构后的Project Tree不止增长了对分布式接口的监控,还增长了pointcut表示式。springboot

访问ProjectTree

启动你的项目,首先访问你项目的某个接口,使其执行被监控的方法。而后访问localhost:8080/projecttree查看网页。数据结构

接口说明

接口 说明
/projecttree 返回完整调用链视图
/projecttree/all 返回所有方法视图
/projecttree/json JSON形式的返回结果
/projecttree/{methodId} 对某一方法的JSON结果

注意事项

使用Shiro、Spring Securit等安全框架时,须要注意对此URL的权限控制。

若你的项目使用Jpa而且遇到Dao层接口注入失败,Entity扫描失败,能够考虑使用@EntityScan和@EnableJpaRepositories注解。

源码介绍

如何下降对主流程的性能消耗?

使用单例线程池实现异步非阻塞模型,下降对主流程的性能影响。

为何使用单例线程池?

首先只有一个线程的线程池实际是队列+单线程,一个一个任务的进行执行,彻底知足本插件的使用需求,对性能的影响也降到最低。

基于内存的内嵌数据库实现数据的快速读写,这里不用担忧数据过大问题,本插件基于方法调用链分析进行选择性保存,理论上说,从接口开始,有多少流程分支,就有多少条数据记录。占用内存极小。

如何实现方法调用分析?

基于栈数据结构设计算法。

关于做者

博客:http://www.yueshutong.cn

邮箱:yster@foxmail.com

Github:https://github.com/yueshutong/Spring-Project-Tree

Gitee:https://gitee.com/zyzpp/Spring-Project-Tree

相关文章
相关标签/搜索