@PostConstruct使用

场景描述:

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

源码展示:

@PostConstruct使用_第1张图片

SonarQube扫描结果


@PostConstruct使用_第2张图片

问题描述

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

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

源码知识点汇总

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

2、jvm类加载时机

源码加载分析

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

注:

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

你可能感兴趣的:(@PostConstruct使用)