静态类中使用spring环境的属性

  1. spring的配置类中内嵌一个自己类的静态属性,并提供静态方法,用于外部静态类或者静态方法可以直接获取
  • 核心是定义一个静态属性INSTANCE,类型是配置类的自己
  • PostConstruct注解修饰init方法,对静态属性赋值为this
@Data
@Configuration
@ConfigurationProperties(prefix = "xxx.config")
public class EosScanConfig {

    private volatile String cookie;

    private volatile String ssoAppKey;

    private volatile String ssoAppToken;

    private volatile String loginAccountErp;

    private volatile String loginAccountPassword;

    private final String HOST = "http://xxx.xxx.com";


    // 静态属性,类型为该类自身
    private static EosScanConfig INSTANCE;

    // 初始化方法
    @PostConstruct
    public void init() {
        INSTANCE = this;
    }

    // 静态方法获取实例
    public static EosScanConfig getInstance() {
        return INSTANCE;
    }
}
  1. 其他静态类中使用
  • Spring 应用中,直接在静态变量初始化时依赖 Spring 容器中的 Bean 可能会导致问题。
  • 可以通过延迟初始化方式来确保静态变量在 Spring 容器初始化之后被正确赋值
  • 这样可以避免在类加载和 Spring 容器初始化顺序方面可能出现的问题。
private static EosScanConfig config;

public static EosScanConfig getConfig() {
    if (config == null) {
        config = EosScanConfig.getInstance();
    }
    return config;
}
posted @   SpecialSpeculator  阅读(5)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 记一次.NET内存居高不下排查解决与启示
点击右上角即可分享
微信分享提示