Java如何读取配置文件并赋值静态变量

 更新时间:2020年10月10日 10:28:44   作者:一只爱阅读的程序员  
这篇文章主要介绍了Java如何读取配置文件并赋值静态变量,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

应用场景

项目开发中某个功能需要抽取成方法写成一个工具类,提供给别人使用。写过工具类的人都知道,工具类中的方法一般都是静态方法,可以直接使用类名点方法名调用,

使用很方便,比如判断某个对象是否为null的方式Objects.equals().由于我写的这个工具类中需要读取配置文件中的内容,可是常规方式注入成员变量时都不是静态的,不

能直接调用,比如这种方式:

@Data
@Component
public class GBaseApiConfig {

  @Value("${gbase.api.prefix}")
  private String gbaseApi;

}

工具类中的静态方法直接调用这种方式注入的成员变量会出现空指针异常,因为Java中的语法规定静态的方法只能调用静态的方法或者是成员变量,否则会报错如下:

想在静态方法中使用其他非静态的成员变量或者是方法只能通过创建对象的方式来调用,可是工具类中不可能这么干,不然就失去工具类的意义了。于是想到

如下方法

方法一

通过静态代码块来读取、加载配置文件中的内容,代码如下

先定义一个静态的成员变量,然后在静态代码块中读取需要的配置文件信息,在给静态变量赋值。这种方式亲自测试完全可用。

方法二

可是过了一段时间后,项目经理让我们修改代码,原因是希望项目中的代码风格统一,全部都使用@Value注解注入的方式。

很快一个同事就找到一个可行的办法,代码如下

实现spring中的InitializingBean接口,然后重写afterPropertiesSet方法即可。实现方式为先将配置文件中的值注入到一个成员变量中,然后通过方法

afterPropertiesSet实现工具类的初始化,这样就可以将配置文件中的信息注入到工具类中。测试可用。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • 如何使用@Slf4j和logback-spring.xml搭建日志框架

    如何使用@Slf4j和logback-spring.xml搭建日志框架

    这篇文章主要介绍了如何使用@Slf4j和logback-spring.xml搭建日志框架问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-06-06
  • java 中序列化NotSerializableException问题解决办法

    java 中序列化NotSerializableException问题解决办法

    这篇文章主要介绍了java 中序列化NotSerializableException问题解决办法的相关资料,这里对序列化问题进行描述说明,并提供解决办法,希望能帮助到大家,需要的朋友可以参考下
    2017-08-08
  • Java多线程知识点全面总结

    Java多线程知识点全面总结

    这篇文章主要介绍了Java多线程知识点全面总结,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-03-03
  • SpringCloud组件OpenFeign之拦截器解读

    SpringCloud组件OpenFeign之拦截器解读

    这篇文章主要介绍了SpringCloud组件OpenFeign之拦截器用法。具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-04-04
  • Spring Cloud Gateway组件的三种使用方式实例详解

    Spring Cloud Gateway组件的三种使用方式实例详解

    Spring Cloud Gateway是 Spring 官方基于 Spring5.0 、 SpringBoot2.0 和 Project Reactor 等技术开发的网关旨在为微服务框架提供一种简单而有效的统一的API 路由管理方式,统一访问接口,这篇文章主要介绍了Spring Cloud Gateway组件的三种使用方式,需要的朋友可以参考下
    2024-01-01
  • Java的中lombok下的@Builder注解用法详解

    Java的中lombok下的@Builder注解用法详解

    这篇文章主要介绍了Java的中lombok下的@Builder注解用法详解,lombok注解在java进行编译时进行代码的构建,对于java对象的创建工作它可以更优雅,不需要写多余的重复的代码,在出现lombok之后,对象的创建工作更提供Builder方法,需要的朋友可以参考下
    2023-11-11
  • Java pdu短信解码全面解析

    Java pdu短信解码全面解析

    本文是根据python的方法改写的pdu短信解码,非常不错,代码简单易懂具有参考借鉴价值,感兴趣的朋友一起看看吧
    2016-10-10
  • spring中@Autowire和@Resource的区别在哪里(推荐)

    spring中@Autowire和@Resource的区别在哪里(推荐)

    这篇文章主要介绍了spring中@Autowire和@Resource的区别在哪里?本文结合实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-02-02
  • POI对Excel自定义日期格式的读取(实例代码)

    POI对Excel自定义日期格式的读取(实例代码)

    下面小编就为大家带来一篇POI对Excel自定义日期格式的读取(实例代码)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-11-11
  • Java 判断实体对象及所有属性是否为空的操作

    Java 判断实体对象及所有属性是否为空的操作

    这篇文章主要介绍了Java 判断实体对象及所有属性是否为空的操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-12-12

最新评论