应用场景

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

使用很方便,比如判断某个对象是否为null的方式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学习笔记八---类的静态变量与静态方法的访问与调用方式...

    静态变量又称类变量,静态方法又称类方法,它们统称为静态成员或类成员.静态成员由static修饰,是属于整个类的,所有的对象共享这些静态成员.不需要创建任何对象,静态成员在类装载时就已初始化了,整个运行 ...

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

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

  3. java 生产配置文件管理_JAVA基础——使用配置文件

    一. 前言 日常我们做项目中,我们经常会遇到这样的情况:由于开发环境和生产环境的不同,项目部署在生产环境之前,有些参数我们并不知道如何取值.例如:数据库链接设定,我们在部署生产环境之前,无法预知客户的 ...

  4. java servlet 输出_JavaWeb中servlet读取配置文件的方式

    我们在JavaWeb中常常要涉及到一些文件的操作,比如读取配置文件,下载图片等等操作.那我们能不能采用我们以前在Java工程中读取文件的方式呢?废话不多说我们来看看下我们以前在Java工程中读取文件是 ...

  5. java类的静态成员初始化_Java类的初始化顺序 (静态变量、静态初始化块、变量、初始......

    很有意思的一篇文章 1.没有继承 静态变量->静态初始化块->变量->变量初始化块->构造方法 2.有继承的情况 父类静态变量->父类静态初始化块->子类静态变量- ...

  6. java 静态变量 存储_Java中存储的静态方法和静态变量在哪里?

    静态方法(实际上所有方法)以及静态变量都存储在PermGen部分,因为它们是反射数据的一部分(类相关数据,而不是与实例相关的). 需要澄清的最新情况: 注意,只有变量及其技术值(原语或引用)存储在Pe ...

  7. java学习笔记(四)----对象、数组作为参数传递,静态变量、静态方法的使用,内部类,使用文档注释

    ***对象作为参数传递*** class passparam { int x;   public static void main(String[] args)   { passparam obj = ...

  8. 【Java 虚拟机原理】Java 引用类型 ( 强引用 | 软引用 | 弱引用 | 虚引用 | 静态变量 )

    文章目录 一.静态变量 二. Java 引用类型 ( 强.软.弱.虚 ) 一.静态变量 GC Root 对象 : 线程栈 中的 栈帧 中的 局部变量表 中的 引用对象 ; 方法区 中的 静态引用对象 ...

  9. Java类(无参、有参构造方法、静态变量)

    构造方法 作用: 初始化成员变量的 注意: 1.构造方法 没有返回值 甚至不写返回值的类型 2.构造方法的方法名 与类名 相同 书写: 关键字 构造方法名(){ } 举例: 创建cat类: publi ...

最新文章

  1. 线性回归介绍及分别使用最小二乘法和梯度下降法对线性回归C++实现
  2. Android开发之浅谈Service的基本概况和常见问题
  3. 软工第二次练习——团队展示
  4. Fedora 31 Beta 准时发布,带来许多激动人心的更新
  5. 快速开发平台业务表字段设置的用法
  6. 技巧:Excel用得好,天天没烦恼
  7. 查看mysql主从复制是否成功的命令_mysql主从复制 - hong查理的个人空间 - OSCHINA - 中文开源技术交流社区...
  8. 右军:为张逸《解构领域驱动设计》推荐序
  9. 文本检测大满贯!自适应文本区域表示改进形状任意的文本检测
  10. 做开发,这几种锁机制你不得不了解一下
  11. UIKit Particle Systems in iOS 5 Tutorial ( 附雨的粒子效果 )
  12. python构建huffman树_python:哈夫曼树,PythonHuffuman
  13. DataSet自定义添加table并添加数据
  14. matlab画图函数之plot【matlab图行绘制一】
  15. 华为自带浏览器书签删除了怎么恢复_1 秒钟,这个工具能导出你浏览器全部重要数据...
  16. html水晶按钮图片,20个纯CSS3实现的彩色透明水晶按钮
  17. 基于django的轻量级CMS Mezzanine搭建笔记
  18. 今日学习——冒泡排序
  19. 2018第七届CodeVita国际编程大赛
  20. 用Excel生成频率分布表及频率分布直方图

热门文章

  1. Chrom 插件下载网址
  2. dfs--选择困难症牛客
  3. 华硕电脑管家(ASUS)电池健康管理失效解决方案
  4. CentOS7 使用 VScode 运行 Go 程序报错
  5. 通信值勤维护管理条例_通信运行部值勤维护管理制度.doc
  6. Python明星web框架Flask
  7. 以太网OAM和CFM的基本概念、配置和应用
  8. VS2015企业版(含安装序列号)
  9. 潜在失效模式及其影响分析(DFMEA)介绍
  10. excel小写转大写公式_让娃爱上学习,Excel 自动检查数学作业,从此母慈子孝