简单进行Springboot Beans归属模块单元的统计分析方法

简单,进行,springboot,beans,归属,模块,单元,统计分析,方法 · 浏览次数 : 113

小编点评

## Springboot Beans数量分析方法 **问题:** 随着产品变动,产品改动部分的启动速度逐渐变慢。 **分析方法:** 1. **统计分析:** 获取每个模块中所有bean的名字、类型、总数以及VO相关的数量信息。 2. **归纳总结:** 统计结果并生成报表,方便分析师了解产品变动对各个模块的影响。 **步骤:** **1. 设置配置** * 在product启动类中添加以下配置: ```java @Bean public ActuatorProperties actuatorProperties() { return ActuatorProperties.builder() .management(ManagementProperties.builder() .health(HealthProperties.builder() .redis(RedisProperties.builder() .enabled(true) .endpoint("/actuator/health") .build()) .rabbit(RabbitProperties.builder() .enabled(true) .endpoint("/actuator/health") .build()) .build()) .build(); } ``` **2. 获取beans信息** * 使用以下命令获取所有beans的名字、类型、总数以及VO相关的数量信息: ```bash cat deploy/beans/beans.txt | jq ``` **3. 归纳总结** * 使用以下命令统计并生成报表: ```bash cat deploy/beans/beans.txt | jq -E ' .modules | { .name, .type, .count, .vo_count } ' | sort | uniq -c | sort -k1hr > /deploy/beans/sum_of_beans.txt ``` **4. 示例报告** ``` # beans_name.txt com.xxxxxxx.module1:info:10 com.xxxxxxx.module2:info:5 com.xxxxxxx.vo:info:2 # beans_type.txt com.xxxxxxx.module1:type1 com.xxxxxxx.module2:type2 com.xxxxxxx.vo:type3 # beans_count.txt 10 5 2 ``` **注意:** * 以上示例仅供参考,具体实现需要根据实际情况进行调整。 * 可以使用其他工具或框架进行分析,例如Spark,但需根据具体需求进行配置。

正文

简单进行Springboot Beans归属模块单元的统计分析方法


背景

基于Springboot的产品变的复杂之后
启动速度会越来越慢.
公司同事得出一个结论.
beans 数量过多会导致启动速度逐渐变慢. 
之前同事写过功能进行分析. 
但是本着能不影响产品就不影响产品. 
我想通过其他方式进行处理. 所以写了这个短文
水一编..

产品改动部分

需要增加actuator的配置
# 注意产品这边为了可观测性.已经先期进行了处理. 
注意的配置有:
白名单:  - /actuator/**
然后管理节点也需要增加处理:
management:
  health:
    redis:
      enabled: true
    rabbit:
      enabled: true
  endpoint:
    health:
      show-details: always
  endpoints:
    web:
      exposure:
        include: "*"

安装部分软件

最新需要安装 jq 进行 json 序列化处理.

yum install jq -y

其他的比如curl 以及 wget 一般发行版都带了
可以直接使用.

获取与分析

# 创建一个存放文件的目录
mkdir -p /deploy/beans
# 拉取beans 原始信息
curl http://127.0.0.1:5200/actuator/beans > /deploy/beans/beans_raws.txt
# json格式化
cat /deploy/beans/beans_raws.txt |jq >/deploy/beans/beans.txt
# 获取所有beans的名字
cat /deploy/beans/beans.txt | grep -E  aliases -B 1 |grep -v aliases |grep -Ev '\-\-' |awk -F ":" '{print $1}' >  /deploy/beans/beans_name.txt
# 获取所有的type信息按照命名空间进行简单分类
cat /deploy/beans/beans.txt  |grep '\"type\"' > /deploy/beans/beans_type.txt
# 获取beans总数
cat /deploy/beans/beans_name.txt |wc -l >/deploy/beans/sum_of_beans.txt
# 按照模块分析beans的数量. 注意需要替换公司的名字. 只分析自己公司的交付物.
cat /deploy/beans/beans_type.txt | grep "com.xxxxxx" |awk -F "." '{print $4}' |sort |uniq -c |sort -k1hr > /deploy/beans/num_of_module.txt
# 获取vo 相关的beans数量信息
cat /deploy/beans/beans_name.txt   |grep "\.vo\." | awk -F "." '{print $4}' |sort |uniq -c |sort -k1hr > /deploy/beans/num_of_vo.txt
# 获取vo总数
cat /deploy/beans/beans_name.txt   |grep "\.vo\." |sort |wc -l >/deploy/beans/sum_of_vo.txt

与简单进行Springboot Beans归属模块单元的统计分析方法相似的内容:

简单进行Springboot Beans归属模块单元的统计分析方法

简单进行Springboot Beans归属模块单元的统计分析方法 背景 基于Springboot的产品变的复杂之后 启动速度会越来越慢. 公司同事得出一个结论. beans 数量过多会导致启动速度逐渐变慢. 之前同事写过功能进行分析. 但是本着能不影响产品就不影响产品. 我想通过其他方式进行处理.

Springboot简单功能示例-4 自定义加密进行登录验证

博主尝试通过gitee的发行版,使用Springboot为基础框架,逐步整合JWT、JPA、VUE等常用功能项目。【本节完成】使用bcprov-jdk18on的sm2加密算法对用户密码进行签名及认证

Springboot简单功能示例-5 使用JWT进行授权认证

博主尝试通过gitee的发行版,使用Springboot为基础框架,逐步整合JWT、JPA、VUE等常用功能项目。【本节完成】使用JWT规范完成登录、确权、登出等操作,分别对html请求和json请求进行处理

Springboot简单功能示例-6 使用加密数据源并配置日志

博主尝试通过gitee的发行版,使用Springboot为基础框架,逐步整合JWT、JPA、VUE等常用功能项目。【本节完成】配置logback;配置了数据源,对数据库账号密码进行加密;增加了系统启动配置

Springboot 使用nacos鉴权的简单步骤

Springboot 使用nacos鉴权的简单步骤 背景 前端时间nacos爆出了漏洞. 因为他的默认token固定,容易被利用. 具体的问题为: QVD-2023-6271 漏洞描述:开源服务管理平台 Nacos 中存在身份认证绕过漏洞, 在默认配 置下未token.secret.key 进行修改

SpringBoot进阶教程(七十七)WebSocket

WebSocket是一种在单个TCP连接上进行全双工通信的协议。WebSocket使得客户端和服务器之间的数据交换变得更加简单,允许服务端主动向客户端推送数据。在WebSocket API中,浏览器和服务器只需要完成一次握手,两者之间就直接可以创建持久性的连接,并进行双向数据传输。

SpringBoot实战:轻松实现接口数据脱敏

引言 在现代的互联网应用中,数据安全和隐私保护变得越来越重要。尤其是在接口返回数据时,如何有效地对敏感数据进行脱敏处理,是每个开发者都需要关注的问题。本文将通过一个简单的Spring Boot项目,介绍如何实现接口数据脱敏。 一、接口数据脱敏概述 1.1 接口数据脱敏的定义 接口数据脱敏是指在接口返

Python 搭建 FastAPI 项目

一般网上的文章都是以脚本的方式写Demor的,没找到自己想要的那种项目结构型的示例(类似Java SpringBoot 创建 Model,通过 pom 进行关联配置的那种) 看了一些源码,再结合自己的想法,建了一个简单的示例, 用 Python 做接口服务的项目搭建,仅供参考 代码结构说明 VipQ

多租户基于Springboot+MybatisPlus实现使用一个数据库一个表 使用字段进行数据隔离

# 多租户实现方式 ```properties 多租户在数据存储上主要存在三种方案,分别是: 1. 独立数据库 即一个租户一个数据库,这种方案的用户数据隔离级别最高,安全性最好,但成本较高。 优点:为不同的租户提供独立的数据库,有助于简化数据模型的扩展设计,满足不同租户的独特需求;如果出现故障,恢复

盘点 Spring Boot 解决跨域请求的几种办法

熟悉 web 系统开发的同学,对下面这样的错误应该不会太陌生。 之所以会出现这个错误,是因为浏览器出于安全的考虑,采用同源策略的控制,防止当前站点恶意攻击 web 服务器盗取数据。 01、什么是跨域请求 同源策略,简单的说就是当浏览器访问 web 服务器资源时,只有源相同才能正常进行通信,即协议、域