Spring boot 读取Application.yml 到全局静态变量

本文介绍了一种将配置文件整合到配置中心的方案,并详细解释了如何在Spring Boot应用中通过注解读取配置中心的Application.yml文件,解决了原有读取配置文件绝对路径方法的局限性。

背景:

公司要求把配置文件存放到配置中心,通过配置中心统一修改配置文件,为方便管理,所有配置文件都整合到了Application.yml 配置中,其中redis 相关配置也整合到了Application.yml 文件中,发现以前通过读取配置文件绝对路径的方法不能适用读取配置中心的Application.yml 文件,所以需要调整读取实现方法。

整合前文件

整合后:

那么如何读取Application.yml ,

第一步:现通过注解读取配置文件:

@Component

Public class CacheConfValue{

@Value("${jedis.maxTotal}")

Public Strin gmaxTotal;

@Value("${jedis.maxIdle}")

Public String maxIdle;

@Value("${jedis.minIdle}")

Public String minIdle;

@Value("${jedis.maxWaitMillis}")

Public String maxWaitMillis;

@Value("${jedis.key}")

Public String key;

@Value("${jedis.nodes}")

Public String nodes;

public String  getMaxTotal(){

return  maxTotal;

}

public void setMaxTotal(StringmaxTotal){

this.maxTotal=maxTotal;

}

public String  getMaxIdle(){

return  maxIdle;

}

public void setMaxIdle(StringmaxIdle){

this.maxIdle=maxIdle;

}

public String  getMinIdle(){

return  minIdle;

}

public void setMinIdle(StringminIdle){

this.minIdle=minIdle;

}

public String  getMaxWaitMillis(){

return  maxWaitMillis;

}

public void setMaxWaitMillis(StringmaxWaitMillis){

this.maxWaitMillis=maxWaitMillis;

}

public String  getKey(){

return  key;

}

public void setKey(Stringkey){

this.key=key;

}

public String  getNodes(){

return  nodes;

}

public void setNodes(Stringnodes){

this.nodes=nodes;

}

}

因为实现redis 连接的方法在static 方法语句块中,发现直接通过@Autowired 调用bean,会抛出空指针异常,

原因是:Java变量的初始化顺序为:静态变量或静态语句块–>实例变量或初始化语句块–>构造方法–>@Autowired,

然后修改读取文件到全局静态变量,在读取全局变量,发现执行成功。

Private static final CacheConfValue cacheConfValue =(CacheConfValue)LocalContextFactory.getInstance().getBean("cacheConfValue");

public static final StringmaxTotal=cacheConfValue.getMaxTotal();

public static final StringmaxIdle=cacheConfValue.getMaxIdle();

public static final StringminIdle=cacheConfValue.getMinIdle();

public static final StringmaxWaitMillis=cacheConfValue.getMaxWaitMillis();

public static final StringcacheKey=cacheConfValue.getKey();

public static final Stringnodes=cacheConfValue.getNodes();

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

weixin_41007138

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值