基于Spring环境的方法调用链分析框架 Spring Project Tree

Apache
Java
跨平台
2019-02-09
像风一样i

 

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

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

很快就要深入项目做开发了,怎么办呢?

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

演示网址:http://116.85.23.6:8521/projecttree

下载使用

项目暂时没有加入Maven中央仓库,所以还需要你clone或download到本地。

在本地计算机进入项目的pom.xml文件所在目录,打开命令行(CMD),执行install命令安装到本地。

mvn install

这里有一个小技巧,你可以手动修改pom.xml的spring-boot版本使它和你当前工程版本保持一致

以后使用时,只需要导入依赖

<dependency>
    <groupId>cn.yueshutong</groupId>
    <artifactId>spring-project-tree</artifactId>
    <version>0.0.x-SNAPSHOT</version>
</dependency>

Spring Boot安装

如果你的项目是Spring Boot,那么使用会非常简单,只需要一个注解即可。

@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表示式。

访问ProjectTree

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

接口说明

接口 说明
/projecttree 返回完整调用链视图
/projecttree/all 返回全部方法视图
/json/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

的码云指数为
超过 的项目
加载中

评论(0)

暂无评论

暂无资讯

暂无问答

SpringBoot学习整理-helloworld

#### 1.Ecliplse创建Maven工程 New Maven Project - Create Simple Project Group Id: com.yyaat Artifact Id: sample Packaging: jar #### 2.创建pom.xml ```xml 4.0.0 com.yyaat sample-h...

2018/05/15 23:30
41
0
Spring | 手把手教你SSM最优雅的整合方式

HEY 本节主要内容为:基于Spring从0到1搭建一个web工程,适合初学者,Java初级开发者。欢迎与我交流。 MODULE 新建一个Maven工程。 不论你是什么工具,选这个就可以了,然后next,直至finis...

2018/09/20 01:01
35
0
使用Spring Boot开发者工具进行自动重启和页面自动刷新

## 简介 大家可能都听说过开发Node.js应用时可以使用多种工具对开发者提供便利,如WebPack提供了开发者服务器来支持js应用动态更替,并在保存文件时自动刷新浏览器。Spring Boot也提供了相似...

2018/05/07 16:22
542
1
Spring Boot系列实战文章合集(附源码)

概 述 文章开始之前先感叹一番吧。个人从之前的 C语言项目开发转到 Java项目开发来之后开始学着用 Spring Boot做一些后端服务,不得不说 Spring Boot脚手架式的开发真的是十分便利,最近连掉...

01/31 07:37
3.3K
11
学习Spring Boot

Spring boot 是什么 ? 简单说, spring boot 是一个构建项目的工具, 一个脚手架. Spring boot 能干什么? spring boot 做非常少的配置就可以构建生产级别的单体应用. Spring boot 怎么干的? 下...

2018/05/06 11:48
68
0
Spring Boot 中如何使用拦截器(十五)

关于拦截器,大家一定都不陌生,spring boot 中是如何使用拦截器的呢?今天就举个例子,来给大家说明一下,废话不多说,开始撸代码!!! 1、创建一个新的spring boot项目,并引入相应的jar...

2018/07/25 15:19
1K
3
史上最简单的 SpringCloud 教程 | 第一篇: 服务的注册与发现(Eureka)

一、spring cloud简介 spring cloud 为开发人员提供了快速构建分布式系统的一些工具,包括配置管理、服务发现、断路器、路由、微代理、事件总线、全局锁、决策竞选、分布式会话等等。它运行环...

2018/04/14 08:32
189
0
简单的spring-data集成mongoDB项目,实现crud的功能

集成了spring框架的jar,加上三个spring-data的jar和一个驱动包 用IDE开发工具新建一个java 项目,需要spring框架的包,和spring-data需要的包,分别是 包下的三个包:spring-data-mongodb ,...

2013/01/24 19:04
1K
1
【微服务】Spring-Boot整合Consul (自定义服务配置及健康检查)

目的 上文提到仅使用discovery包自带的注册功能进行服务注册,但是由于监控的是 /health,使用actuator实现自由度不够,并且有些低级异常可能不完全影响服务运行,但状态依然为DOWN,导致过于...

2018/01/01 14:43
2.4K
0

没有更多内容

加载失败,请刷新页面

返回顶部
顶部