@PostConstruct使用

场景描述:

    在开发过程中,由于每个人的编码习惯和风格不同,而项目平时又不经常进行代码优化,久而久之会使项目代码存在诸多问题。鉴于此公司近来使用SonarQube对公司项目的所有工程进行了代码质量扫描,由此,发现了诸多问题。

源码展示:

SonarQube扫描结果


问题描述

从非静态方法正确地更新静态字段非常困难,如果有多个类实例和/或多个线程在运行,则很容易导致错误。理想情况下,静态字段只能从同步的静态方法中更新。

每当从非静态方法更新静态字段时,此规则都会引发问题。

源码知识点汇总

1、注解@PostConstruct使用规范及其特点  @PostConstruct使用详解

2、jvm类加载时机

源码加载分析

    首先,JVM在加载阶段通过类的全路径找到该类并把类的信息加载到JVM的方法区,然后在堆区实例化有关java.lang.Class对象,作为方法区中这个类的信息的入口;然后在连接阶段,为类的静态变量logClinet分配内存并赋予JVM默认初始值null;因为注解@PostConstruct的缘故,在类初始化之前会先加载该使用该注解的方法;然后再执行类的初始化。

注:

    构造方法  ——> @Autowired —— > @PostConstruct ——> 静态方法 (按此顺序加载)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 深入理解Class对象 RRTI的概念以及Class对象作用 认识Class对象之前,先来了解一个概念,RTTI(...
    架构师springboot阅读 1,603评论 0 3
  • 本来是准备看一看Spring源码的。然后在知乎上看到来一个帖子,说有一群**自己连Spring官方文档都没有完全读...
    此鱼不得水阅读 6,966评论 4 21
  • JVM体系结构 JVM是一种解释执行class文件的规范技术。 JVM体系结构 我翻译的中文图: 中文图 类装载器...
    0f43ee70035e阅读 1,082评论 1 30
  • 绘小娜阅读 333评论 0 0
  • 毕业的时候加了所有人的微信,都说好要一直联系。等吃完毕业饭后,大家都草草离开了。好像这五年与你的相遇变为一本薄薄的...
    暖鹿f阅读 222评论 0 0