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

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

如这种方式:

@Data

@Component

public class GBaseApiConfig {

@Value(“${gbase.api.prefix}”)

private String gbaseApi;

}

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

想使用其他非静态的成员变量或者是方法只能通过创建对象来调用,可是工具类中不可能这么干。于是想到如下方法

方法一

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

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

方法二

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

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

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

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

java 静态资源变量_Java中读取配置文件中的内容,并将其赋值给静态变量的方法...相关推荐

  1. java处理中文字符串_Java实现读取文章中重复出现的中文字符串

    在上个星期阿里巴巴一面的时候,最后面试官问我如何把一篇文章中重复出现的词或者句子找出来,当时太紧张,答的不是很好.今天有时间再来亲手实现一遍.其实说白了也就是字符串的处理,所以难度并不是很大. 以下是 ...

  2. 如何在java代码中读取配置文件

    在日常开发过程中,我们经常需要拼接一些字符串之类的东西,而这些字符串往往是不变的,或者在java代码中多次使用到的.当然我们可以在java代码中写死,但是这样做的缺点也是有目共睹的,一旦业务需求发生变 ...

  3. java静态类如何赋值_Java如何读取配置文件并赋值静态变量

    应用场景 项目开发中某个功能需要抽取成方法写成一个工具类,提供给别人使用.写过工具类的人都知道,工具类中的方法一般都是静态方法,可以直接使用类名点方法名调用, 使用很方便,比如判断某个对象是否为nul ...

  4. SpringBoot 读取配置文件中参数全面教程

    一.简介 在日常开发使用 SpringBoot 框架时,经常有一些配置信息需要放置到配置文件中,我们需要手动读取这些配置到应用中进行一些逻辑,这里整理了一些常用读取配置的方法,简单介绍一下. 1.Sp ...

  5. 读取配置文件中的内容演练 20210412_221336.mp4

    读取配置文件中的内容演练 20210412_221336.mp4 演练配置文件的读取 步骤: 先创建一个配置文件(我们可以存想要记录的数据) 然后新建测试类,来读取配置中的内容 代码 import j ...

  6. @PropertiesSource注解读取配置文件中的数据

    这是properties配置文件. 数据结构. 注入对象. 或者: 使用对象获取属性值. 或者: 了解:========================================= 通过@Pro ...

  7. java 从excel中读取数据_在Java中读取Excel文件的内容和导出数据到Excel文件中

    转自www.chianjavaworld.net 原作者:SonyMusic 读:rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr 在Java ...

  8. [Config]如何利用ConfigurationSettings.AppSettings.GetValues读取配置文件中多个同Key的value...

    编写者:郑昀@Ultrapower 默认情况下, string[] strArray = System.Configuration.ConfigurationSettings.AppSettings. ...

  9. Springboot中,如何读取配置文件中的属性

    摘要:在比较大型的项目的开发中,比较经常修改的属性我们一般都是不会在代码里面写死的,而是将其定义在配置文件中,之后如果修改的话,我们可以直接去配置文件中修改,那么在springboot的项目中,我们应 ...

最新文章

  1. 微软某程序员吐槽:如果毕业去字节,现在总包150万!如今一年才50万,看见字节的人都抬不起头!...
  2. 《 线性代数及其应用 (原书第4版)》—— 2.3 可逆矩阵的特征
  3. C语言高级编程:深入理解const
  4. 洛谷P1462-通往奥格玛瑞的路【日常图论,二分查找,最短路,SPAF】
  5. 锁 mysql_Mysql的锁(S锁和X锁的区别)
  6. 不要错过路边的的风景
  7. 查看Linux服务器运行级别命令,linux命令1、如何查看当前的Linux服务器的运行级别?...
  8. 商品进销差价_商品进销差价如何核算?
  9. 通俗易懂!视觉slam第一部分——slam简介与相机介绍
  10. php 二进制 十六进制转换,php 实现进制转换(二进制、八进制、十六进制)互相转换实现代码...
  11. 信息安全体系建设(一)
  12. Solidworks或CAD怎样输出高质量图片?
  13. 【数学建模】模型的评价、模型的推广与改进
  14. 如何获取Linux的主机名和域名?
  15. ping 不通 华为三层交换机vlan_华为s5700交换机各VLAN下部分电脑ping不通
  16. 显示器接口针脚定义(D-sub15)
  17. Adobe ColdFusion
  18. python读取tiff图像,浅谈python下tiff图像的读取和保存方法
  19. 【Microsoft Azure 的1024种玩法】六十九.通过SSMS将本地自建SQL Server 数据库脱机迁移至Azure SQL Database
  20. 宝剑配英雄,玫瑰赠伊人!(祝全天下静姝妇女节快乐!)

热门文章

  1. android ffmegp for_FFmpeg 编译for Android
  2. java聊天程序源代码_java聊天程序源代码
  3. python10后的年利率_用Python把20年的GDP、人口以及房价数据进行了可视化
  4. jsp 修改的员工select怎么_SpringBoot+Mybatis+Jsp 员工管理系统
  5. java为什么打不开jar_带你上手阿里开源的 Java 诊断利器:Arthas
  6. php long2ip,php ip2long和long2ip函数实现
  7. go 链路追踪_【go-micro实践】jaeger分布式链路追踪
  8. android setlatesteventinfo 找不到,安卓通知的基本用法
  9. dpkg安装软件流程_ubuntu安装搜狗输入法linux版
  10. composer报错:received xxx bytes out of the 以及composer手动引入扩展包