Java如何读取配置⽂件并赋值静态变量
应⽤场景
项⽬开发中某个功能需要抽取成⽅法写成⼀个⼯具类,提供给别⼈使⽤。写过⼯具类的⼈都知道,⼯具类中的⽅法⼀般都是静态⽅法,可以直接使⽤类名点⽅法名调⽤,使⽤很⽅便,⽐如判断某个对象是否为null的⽅式Objects.equals().由于我写的这个⼯具类中需要读取配置⽂件中的内容,可是常规⽅式注⼊成员变量时都不是静态的,不能直接调⽤,⽐如这种⽅式:
@Data
@Component
public class GBaseApiConfig {
  @Value("${gbase.api.prefix}")
java配置用户变量
  private String gbaseApi;
}
⼯具类中的静态⽅法直接调⽤这种⽅式注⼊的成员变量会出现空指针异常,因为Java中的语法规定静态的⽅法只能调⽤静态的⽅法或者是成员变量,否则会报错如下:
想在静态⽅法中使⽤其他⾮静态的成员变量或者是⽅法只能通过创建对象的⽅式来调⽤,可是⼯具类中不可能这么⼲,不然就失去⼯具类的意义了。于是想到
如下⽅法
⽅法⼀
通过静态代码块来读取、加载配置⽂件中的内容,代码如下
先定义⼀个静态的成员变量,然后在静态代码块中读取需要的配置⽂件信息,在给静态变量赋值。这种⽅式亲⾃测试完全可⽤。
⽅法⼆
可是过了⼀段时间后,项⽬经理让我们修改代码,原因是希望项⽬中的代码风格统⼀,全部都使⽤@Value注解注⼊的⽅式。
很快⼀个同事就到⼀个可⾏的办法,代码如下
实现spring中的InitializingBean接⼝,然后重写afterPropertiesSet⽅法即可。实现⽅式为先将配置⽂件中的值注⼊到⼀个成员变量中,然后通过⽅法afterPropertiesSet实现⼯具类的初始化,这样就可以将配置⽂件中的信息注⼊到⼯具类中。测试可⽤。
以上就是本⽂的全部内容,希望对⼤家的学习有所帮助,也希望⼤家多多⽀持。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。