当前位置: 首页 > news >正文

springboot 显示打印加载bean耗时工具类

一  spring的原生接口说明

1.1 接口说明

Aware是Spring框架提供的一组特殊接口,可以让Bean从Spring容器中拿到一些资源信息。

BeanFactoryAware:实现该接口,可以访问BeanFactory对象,从而获取Bean在容器中的相关信息。

EnvironmentAware:实现该接口,可以访问Environment对象,从而获取环境相关的配置属性,比如系统属性、环境变量等。

ResourceLoaderAware:实现该接口,可以访问ResourceLoader对象,从而获取资源加载器,用于加载类路径下的资源文件。

MessageSourceAware:实现该接口,可以访问MessageSource对象,从而获取国际化消息。

 

1.2  案例说明

 1.打印耗时

package com.ljf.springboot.mybaits.demos.config;/*** @ClassName: TimeCostBeanPostProcessor* @Description: TODO* @Author: admin* @Date: 2025/06/29 17:48:32 * @Version: V1.0**/import com.google.common.collect.Maps;
import org.springframework.beans.BeansException;
import org.springframework.beans.factory.config.BeanPostProcessor;
import org.springframework.stereotype.Component;import java.util.Map;
/**
* @author admin
* @description
这个类实现了Spring框架的BeanPostProcessor接口,用于在bean初始化前后记录每个bean的创建时间成本
* @param
* @return
*/
@Component
public class TimeCostBeanPostProcessor implements BeanPostProcessor {private Map<String, Long> costMap = Maps.newConcurrentMap();private Long costSumTime = 0L;@Overridepublic Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException {costMap.put(beanName, System.currentTimeMillis());return bean;}@Overridepublic Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {if (costMap.containsKey(beanName)) {Long start = costMap.get(beanName);long cost = System.currentTimeMillis() - start;if (cost > 0) {costMap.put(beanName, cost);System.out.println("bean: " + beanName + "\ttime: " + cost);}}return bean;}
}

2.监控事件

package com.ljf.springboot.mybaits.demos.config;/*** @ClassName: ApplicationEventListener* @Description: TODO* @Author: admin* @Date: 2025/06/29 17:44:41 * @Version: V1.0**/import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.context.ApplicationEvent;
import org.springframework.context.ApplicationListener;
import org.springframework.stereotype.Component;
/**
* @author admin
* @description
这个类实现了Spring框架的ApplicationListener<ApplicationEvent>接口,用于监听并处理应用上下文中的事件。
* @param
* @return
*/
@Component
public class ApplicationEventListener implements ApplicationListener<ApplicationEvent> {private static final Logger logger = LoggerFactory.getLogger(ApplicationEventListener.class);@Overridepublic void onApplicationEvent(ApplicationEvent event) {logger.info("=======event received : {}", event.getClass().getName());}
}

测试案例结果:

 

 

http://www.lryc.cn/news/579275.html

相关文章:

  • 【大模型学习 | MINIGPT-4原理】
  • MYSQL基础内容
  • dial tcp 10.1.68.88:3306: connect: cannot assign requested address
  • Python 数据分析:numpy,说人话,说说数组维度。听故事学知识点怎么这么容易?
  • 深度剖析NumPy核心函数reshape()
  • 使用Scapy构造OSPF交互报文欺骗网络设备与主机建立Full关系
  • Python 高光谱分析工具(PyHAT)
  • 【Linux】不小心又创建了一个root权限账户,怎么将它删除?!
  • 数据结构与算法:贪心(二)
  • Docker Compose 基础——AI教你学Docker
  • 鸿蒙UI框架深度解析:对比Android/iOS的布局适配与组件设计
  • 优雅草蜻蜓T语音会议系统私有化部署方案与RTC技术深度解析-优雅草卓伊凡|clam
  • 【字节跳动】数据挖掘面试题0002:从转发数据中求原视频用户以及转发的最长深度和二叉排序树指定值
  • gin框架 中间件 是在判断路由存在前执行还是存在后执行的研究
  • 人工智能-基础篇-14-知识库和知识图谱介绍(知识库是基石、知识图谱是增强语义理解的知识库、结构化数据和非结构化数据区分)
  • ubentu服务器版本安装Dify
  • docker拉取redis并使用
  • 代码训练LeetCode(44)螺旋矩阵
  • Notion 创始人 Ivan Zhao:传统软件开发是造桥,AI 开发更像酿酒,提供环境让 AI 自行发展
  • Highcharts 安装使用教程
  • 数据结构20250620_数据结构考试
  • mysql查看数据库
  • IPS防御原理和架构
  • MySQL 用户管理与权限控制
  • Python 的内置函数 print
  • vue动态绑定样式
  • 利用tcp转发搭建私有云笔记
  • (第三篇)HMTL+CSS+JS-新手小白循序渐进案例入门
  • Spring Cloud 微服务(链路追踪与日志聚合)
  • Springboot开发常见注解一览