静态类中使用spring环境的属性
- 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;
}
}
- 其他静态类中使用
- Spring 应用中,直接在静态变量初始化时依赖 Spring 容器中的 Bean 可能会导致问题。
- 可以通过延迟初始化方式来确保静态变量在 Spring 容器初始化之后被正确赋值
- 这样可以避免在类加载和 Spring 容器初始化顺序方面可能出现的问题。
private static EosScanConfig config;
public static EosScanConfig getConfig() {
if (config == null) {
config = EosScanConfig.getInstance();
}
return config;
}
原创:做时间的朋友

浙公网安备 33010602011771号