需求:系统只保留一个认证信息,我需要把认证信息通过接口返回给前台。
分析因为只保留一个认证信息,因此并不需要持久化,所以也就不用存数据库,最简单的做法就是用对象缓存起来,因此使用单例模式最简单,一个类只对应一个对象。
定义并实现单例对象类
通过类名.getInstance方法来创建并获取这个单例对象。
通过双重检查锁来提高多线程时的性能,避免多线程下每次调用getInstance时都可能会阻塞影响性能。
volatile 关键字用于确保在多线程下获取到的对象是最新的(前提:只有一个线程会修改被修饰对象时)。
@ApiModel("基础信息展示对象")
@Data
public class JTRSBasicInfo implements Serializable {
private static final long serialVersionUID = 1L;
private volatile static JTRSBasicInfo instance;
private JTRSBasicInfo() {}
public static JTRSBasicInfo getInstance() {
if (instance == null) {
synchronized (JTRSBasicInfo.class) {
if (instance == null) {
instance = new JTRSBasicInfo();
}
}
}
return instance;
}
@ApiModelProperty("socket端口")
public int socketPort;
@ApiModelProperty("http端口")
public int httpPort;
}