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

Java延迟初始化Logger日志对象

开源项目SDK:https://github.com/mingyang66/spring-parent
个人文档:https://mingyang66.github.io/raccoon-docs/#/

将日志Logger对象定义在静态内部类中是一种常见的做法,这样做是有它特殊的好处,示例如下:

  private static class LogHolder {private static final Log log = LogFactory.getLog(VendorDatabaseIdProvider.class);}
  • 延迟初始化

    静态内部类只有在第一次被引用时才会被加载和初始化,这意味着Log对象只有在LogHolder类被首次访问时才会被创建,从而实现延迟初始化,这有助于减少应用程序的开销。

  • 线程安全

    由于java类加载器是线程安全的,静态内部类的加载和初始化也是线程安全的,这意味着多个线程可以安全地访问LogHolder.log对象而无需额外的同步措施。

  • 单例模式

    通过静态内部类的方式,可以确保Log对象在应用程序的生命周期中只被创建一次,即实现了单例模式,这有助于避免重复创建日志对象,从而节省资源。

  • 解耦

    将日志实例化和访问逻辑封装在静态内部类中,可以使主类更加简介清晰,这有助于解耦日志功能和主类的业务逻辑。

  • 避免静态初始化快

    使用静态内部类可以避免在主类中直接使用静态初始化块来初始化日志对象,静态初始化块可能会增加代码的复杂性,并在某些情况下难以维护。

相关文章:

  • 【C++11 之nullptr关键字 用以消除空指针和0歧义】基础知识必须了解
  • 【Python教程】压缩PDF文件大小
  • Vue3中的常见组件通信之`provide`、`inject`
  • webkit 的介绍
  • 大模型网信办备案全网最详细说明(付附件)
  • Docker部署Nginx1.21.5(保姆级图文教程)
  • Mybatis框架的缓存
  • Excel导出实例
  • rust内存分配,内存回收,内存泄露
  • 联华集团:IT团队如何实现从成本中心提升至价值中心|OceanBase 《DB大咖说》(十)
  • (三十)Flask之wtforms库【剖析源码上篇】
  • 动态规划02(Leetcode62、63、343、96)
  • C语言——文件
  • Elastic字段映射(_source,doc_value,fileddata,index,store)
  • 【C语言】解决C语言报错:Array Index Out of Bounds
  • 9月CHINA-PUB-OPENDAY技术沙龙——IPHONE
  • $translatePartialLoader加载失败及解决方式
  • 《网管员必读——网络组建》(第2版)电子课件下载
  • MySQL Access denied for user 'root'@'localhost' 解决方法
  • SAP云平台运行环境Cloud Foundry和Neo的区别
  • springMvc学习笔记(2)
  • tensorflow学习笔记3——MNIST应用篇
  • ⭐ Unity + OpenCV 实现实时图像识别与叠加效果
  • Windows Containers 大冒险: 容器网络
  • 番外篇1:在Windows环境下安装JDK
  • 后端_MYSQL
  • 基于HAProxy的高性能缓存服务器nuster
  • 码农张的Bug人生 - 初来乍到
  • 白色的风信子
  • 阿里云API、SDK和CLI应用实践方案
  • # Redis 入门到精通(九)-- 主从复制(1)
  • # SpringBoot 如何让指定的Bean先加载
  • # windows 运行框输入mrt提示错误:Windows 找不到文件‘mrt‘。请确定文件名是否正确后,再试一次
  • #if 1...#endif
  • #LLM入门|Prompt#2.3_对查询任务进行分类|意图分析_Classification
  • #QT(智能家居界面-界面切换)
  • #调用传感器数据_Flink使用函数之监控传感器温度上升提醒
  • #图像处理
  • (4)STL算法之比较
  • (delphi11最新学习资料) Object Pascal 学习笔记---第13章第1节 (全局数据、栈和堆)
  • (pytorch进阶之路)CLIP模型 实现图像多模态检索任务
  • (不用互三)AI绘画:科技赋能艺术的崭新时代
  • (第二周)效能测试
  • (二)测试工具
  • (分布式缓存)Redis持久化
  • (利用IDEA+Maven)定制属于自己的jar包
  • (一)UDP基本编程步骤
  • (转)es进行聚合操作时提示Fielddata is disabled on text fields by default
  • (转载)hibernate缓存
  • .Family_物联网
  • .NET Core 控制台程序读 appsettings.json 、注依赖、配日志、设 IOptions
  • .net 获取某一天 在当月是 第几周 函数
  • .net 设置默认首页
  • .Net 中的反射(动态创建类型实例) - Part.4(转自http://www.tracefact.net/CLR-and-Framework/Reflection-Part4.aspx)...
  • .NetCore项目nginx发布