Java如何读取配置文件并赋值静态变量
应用场景
项目开发中某个功能需要抽取成方法写成一个工具类,提供给别人使用。写过工具类的人都知道,工具类中的方法一般都是静态方法,可以直接使用类名点方法名调用,
使用很方便,比如判断某个对象是否为null的方式Objects.equals().由于我写的这个工具类中需要读取配置文件中的内容,可是常规方式注入成员变量时都不是静态的,不
能直接调用,比如这种方式:
@Data @Component public class GBaseApiConfig { @Value("${gbase.api.prefix}") private String gbaseApi; }
工具类中的静态方法直接调用这种方式注入的成员变量会出现空指针异常,因为Java中的语法规定静态的方法只能调用静态的方法或者是成员变量,否则会报错如下:
想在静态方法中使用其他非静态的成员变量或者是方法只能通过创建对象的方式来调用,可是工具类中不可能这么干,不然就失去工具类的意义了。于是想到
如下方法
方法一
通过静态代码块来读取、加载配置文件中的内容,代码如下
先定义一个静态的成员变量,然后在静态代码块中读取需要的配置文件信息,在给静态变量赋值。这种方式亲自测试完全可用。
方法二
可是过了一段时间后,项目经理让我们修改代码,原因是希望项目中的代码风格统一,全部都使用@Value注解注入的方式。
很快一个同事就找到一个可行的办法,代码如下
实现spring中的InitializingBean接口,然后重写afterPropertiesSet方法即可。实现方式为先将配置文件中的值注入到一个成员变量中,然后通过方法
afterPropertiesSet实现工具类的初始化,这样就可以将配置文件中的信息注入到工具类中。测试可用。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。
相关推荐
-
java property配置文件管理工具框架过程详解
这篇文章主要介绍了java property配置文件管理工具框架过程详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 property property 是 java 实现的 property 框架. 特点 优雅地进行属性文件的读取和更新 写入属性文件后属性不乱序 灵活定义编码信息 使用 OO 的方式操作 property 文件 支持多级对象引用 快速开始 环境依赖 Maven 3.x Jdk 1.7+ Maven 引入依赖 <depende
-
java加载属性配置properties文件的方法
什么是properties文件 属性配置文件,后缀名为 .properties 文件中严格按照key=value进行数据参数的填写 中文参数值需要转为Unicode编码 不区分基本数据类型 一个编辑好的aaa.properties文件如下图所示 username=root flag=true xm =\u4f60\u597d age=18 为什么要使用properties文件 设想这么一种场景,当你项目发布上线后,比如连接mysql数据库的端口号需要调整,难道需要重写改代码,打包,发布么?对于一
-
Java语言读取配置文件config.properties的方法讲解
应用场景 有些时候项目中会用到很多路径,并且很可能多个路径在同一个根目录下,那为了方便配置的修改,达到只修改根目录即可达到一改全改的效果,此时就会想到要是有变量就好了: 另外有时候路径中的文件名是不确定的,要靠业务程序运行时去判断文件名应该如何设置,而又希望此文件下的目录名是确定的,那此时用变量也是比较好的解决方式. 一.配置文件config.properties是放在src根目录下的:例如我的是 /PropertiesTest/src/com/xuliugen/project/type.pro
-
JavaWeb读取配置文件的四种方法
方式一:采用ServletContext读取 获取配置文件的realpath,然后通过文件流读取出来或者通过方法getReasurceAsStream(). 因为是用ServletContext读取文件路径,所以配置文件可以放入在WEB-INF的classes目录中,也可以在应用层级及WEB-INF的目录中.文件存放位置具体在eclipse工程中的表现是:可以放在src下面,也可放在WEB-INF及Web-Root下面等.因为是读取出路径后,用文件流进行读取的,所以可以读取任意的配置文件包括xm
-
Java读取.properties配置文件方法示例
一.介绍 Properties文件在Java中主要为配置文件,文件类型为:.properties,格式为文本文件,内容格式为"键=值" 二.读取 这里我采用的是getResourceAsStream的文件读取方法 如果想要使用这个方法,则需要了解一些基本使用信息: 1.读取文件路径范围:只局限于工程的源文件中 2.文件访问形式:带"/"是绝对路径,不带"/"是相对路径 3.读取文件类型:主要为:.properties文件,.xml文件 三.使用
-
Java 读取、获取配置文件.properties中的数据
java获取配置文件.properties中的数据,具体内容如下所示: 方法太多,只写一种比较简单的. 文件test1.properties内容 test1 = 123; test2=3211 Properties prop = new Properties(); prop.load(new FileInputStream("src/test1.properties")); System.out.println(prop.get("test1")); 输出 123;
-
IntelliJ IDEA配置java环境及解决IDEA不能直接运行单个JAVA文件的问题
写Java代码选择IEDA的原因是我之前用的Pycharm写python,而IEDA和pycharm几乎一模一样的用法,而且IEDE可以写Java,Python等很多语言,只要安装了对应的插件:File->Settings->Plugins->Browse respositories- 安装IntelliJ IDEA 1.上官网下载IntelliJ IDEA 2.安装 下载jdk和jre JRE: Java Runtime Environment JDK:Java Development
-
Java如何读取配置文件并赋值静态变量
应用场景 项目开发中某个功能需要抽取成方法写成一个工具类,提供给别人使用.写过工具类的人都知道,工具类中的方法一般都是静态方法,可以直接使用类名点方法名调用, 使用很方便,比如判断某个对象是否为null的方式Objects.equals().由于我写的这个工具类中需要读取配置文件中的内容,可是常规方式注入成员变量时都不是静态的,不 能直接调用,比如这种方式: @Data @Component public class GBaseApiConfig { @Value("${gbase.api.pr
-
java中读取配置文件中数据的具体方法
1.先在项目中创建一个包(如:config),再创建一个配置文件(如:a.properties),添加配置信息如下:比如: 复制代码 代码如下: name=kakaage=28 2.代码: 复制代码 代码如下: import java.io.IOException; import java.io.InputStream; import java.util.Properties; public class PropertyTest { public static void main(String[
-
Java面向对象程序设计:类的定义,静态变量,成员变量,构造函数,封装与私有,this概念与用法详解
本文实例讲述了Java面向对象程序设计:类的定义,静态变量,成员变量,构造函数,封装与私有,this概念与用法.分享给大家供大家参考,具体如下: 本文内容: 什么是面对对象 类的定义与对象实例化 成员变量 成员变量的有效范围 成员变量的赋值 静态变量.方法与实例变量.方法 构造函数 封装与私有 this关键字 注:函数和方法是一样东西.[由于我之前学习的时候有些书籍不是同样的说法,书看多了,我就习惯了不同情况下用不同的说法] 首发时间:2018-03-22 什么是面对对象: 面向对象强调行为处于
-
Android静态变量的生命周期 简单介绍
Android是用Java开发,其静态变量的生命周期遵守Java的设计.我们知道静态变量是在类被load的时候分配内存的,并且存在于方法区.当类被卸载的时候,静态变量被销毁.在PC机的客户端程序中,一个类被加载和卸载,可简单的等同于jvm进程的启动和结束.那么在Android中呢?用的Dalvik vm也是一样的.不过Android不太突出的进程概念,所以对静态变量的生命周期就会感觉模糊,这种模糊对于值类型是无所谓的,如果是静态的对象引用,则与内存回收.内存泄漏这些问题有关,有必要加深研究和理解
-
Java自动读取指定文件夹下所有文件的方法
能够自动读取文件夹下的所有文件在处理或者读取数据的时候作用很大,要不然需要手动修改文件路径,非常麻烦.如果该文件夹下只有几个文件倒是还好,但是一旦文件的数量非常大的时候,将导致工作量非常大,而且还可能漏了某些文件. 接下来为大家讲解一下如何实现这个过程. java代码: import java.io.File; import java.io.FileNotFoundException; import java.io.IOException; import java.util.ArrayList;
-
SpringBoot 使用 @Value 注解读取配置文件给静态变量赋值
1.application.properties 配置文件 mail.username=xue@163.com mail.password=xue mail.host=smtp.163.com mail.smtp.auth=true 2.给普通变量赋值,直接在变量上添加 @Value 注解 import org.springframework.beans.factory.annotation.Value; public class MailConfig { @Value("${mail.user
-
基于Java class对象说明、Java 静态变量声明和赋值说明(详解)
先看下JDK中的说明: java.lang.Object java.lang.Class<T> Instances of the class Class represent classes and interfaces in a running Java application. An enum is a kind of class and an annotation is a kind of interface. Every array also belongs to a class tha
-
springboot 使用yml配置文件给静态变量赋值教程
声明: 此处需求是修改封装的clickhouseUtil数据查询引擎连接工具类.由于此类中的方法都是静态方法.连接地址等参数需要根据不同环境改变.例如开发下地址,测试下地址,生产地址等,所有通过配置文件来获取不同环境下的配置参数,但是使用的方法是静态的,所有不能使用一般情况下的@value直接给变量赋值,需要用到spring 属性的set方法来给静态变量赋值,然后静态方法使用静态变量即可 方法: 第一步:在yml文件中配置需要的参数 clickhouse: address: jdbc:click
-
Springboot 读取自定义pro文件注入static静态变量方式
Springboot 读取pro文件注入static静态变量 mailConfig.properties #服务器 mail.host=smtp.qq.com #端口号 mail.port=587 #邮箱账号 mail.userName=hzy_daybreak_lc@foxmail.com #邮箱授权码 mail.passWord=vxbkycyjkceocbdc #时间延迟 mail.timeout=25000 #发送人 mail.emailForm=hzy_daybreak_lc@foxm
随机推荐
- java 多线程的几种实现方法总结
- angluarjs实现过滤并替换关键字小功能
- [a] 1 [/a]转换为网址的UBB的正则
- 分享一个安卓的内置多种工具类的Activity
- 基于Java生成GUID的实现方法
- Fuel 30 分钟快速安装OpenStack(图文教程)
- js+html5获取用户地理位置信息并在Google地图上显示的方法
- PHP GD 图像处理组件的常用函数总结
- PHP获取photoshop写入图片文字信息的方法
- jQuery实现页面点击后退弹出提示框的方法
- PHP实现网页内容html标签补全和过滤的方法小结【2种方法】
- WML,Apache,和 PHP 的介绍
- Python深入06——python的内存管理详解
- javascript鼠标右键菜单自定义效果
- JavaScript判断IE版本型号
- JavaScript中解决多浏览器兼容性23个问题的快速解决方法
- Android自定义WaveView实现波浪进度效果
- dede3.1分页文字采集过滤规则详说(图文教程)续三
- CN域名强势发展 稳居全球第一大国家顶级域名
- pandas 获取季度,月度,年度首尾日期的方法