I am thinking it will impact performance.

我怀疑这是真的。

假设应用程序在启动时只读取配置文件一次,则读取文件所需的时间可能与应用程序的整体性能无关。实际上,应用程序运行的时间越长,启动时间越短。

只有在具体证据(即测量)来表示性能是重大问题时,才能优化应用程序性能,并且您正在寻求优化的代码是真正的瓶颈。

Can I use separate final class for configuration details

是的,可以做到这一点。没有人会阻止你。 (如果您的代码经过代码审查,有人可能会阻止您。)

不,这是一个坏主意。任何需要您重新编译代码以更改配置参数的事情都是一个坏主意。 IMO。

To read all configuration details at once from the configuration file and storing them as global constants for later use in application.

啊,所以想要读取“常数”的值,而不是硬接线。

是的,那是可能的。而且,将代码中的配线参数配置成比配线更有意义。但这还不是一个好主意(IMO)。

为什么?好吧,看看代码如何:

public final class Config {

public static final int CONST_1;

public static final String CONST_2;

static {

int c1;

String c2;

try (Scanner s = new Scanner(new File("config.txt"))) {

c1 = s.nextInt();

c2 = s.next();

} catch (IOException ex) {

throw RuntimeException("Cannot load config properties", ex);

}

CONST_1 = c1;

CONST_2 = c2;

}

}

第一个观察是,班级是最终的没有区别。它将这些字段声明为final,使它们保持不变。 (将类声明为final可防止子类化,但对静态字段没有影响。静态字段不受继承影响。)

接下来的观察是,这个代码在许多方面是脆弱的:

>如果静态初始化程序块出现问题。由块抛出的未经检查的异常将被包装为ExceptionInInitializerError(是…它是一个错误!!),并且Config类将被标记为错误。

>如果发生这种情况,没有现实的希望恢复,甚至可能是一个坏主意来尝试和诊断错误。

>上面的代码在Config类被初始化时被执行,但确定何时发生这样的事情可能很棘手。

>如果配置文件名是一个参数,那么在触发静态初始化之前,您有遇到参数值的问题。

接下来,与将状态加载到实例变量中相比,代码相当凌乱。而这种混乱主要是因为在静态初始化器的限制之内工作。以下是代码使用最终实例变量时的代码。

public final class Config {

public final int CONST_1;

public final String CONST_2;

public Config(File file) throws IOException {

try (Scanner s = new Scanner(file)) {

CONST_1 = s.nextInt();

CONST_2 = s.next();

}

}

}

最后,静态终场在终场领域的性能优势很小:

>每次访问其中一个常量时,大概有一个或两个机器指令,

>如果JIT编译器是智能的,可能没有什么,而且您可以适当地处理单例配置参考。

无论如何,在绝大多数情况下,收益将是微不足道的。

java 配置文件参数_从Java的配置文件中读取配置参数的最佳方法是什么?相关推荐

  1. 【Spring Boot】从配置文件中读取配置参数

    前言 在生产环境中,经常会用到各种各样的参数,为了避免代码太过死板,一般将参数写入配置文件,然后需要用到参数的时候从配置文件中读取,下面总结出几种从配置文件中读取配置参数的方法. 环境搭建 现有配置文 ...

  2. java中play方法的两个参数_如何避免在play2中到处传递参数?

    在我看来,模板是静态类型的这一事实实际上是一件好事:你可以保证调用你的模板如果编译就不会失败. 但是,它确实在调用站点上添加了一些样板.但是你可以减少它(不会失去静态类型优势). 在Scala中,我看 ...

  3. idea看java版本设置_详解IntelliJ IDEA 中如何配置多个jdk版本即(1.7和1.8两个jdk都可用)...

    详解IntelliJ IDEA 中如何配置多个jdk版本即(1.7和1.8两个jdk都可用) 有时候需要看Java源码,但是 Java 1.7 和 Java 1.8的差别的关系,有时候你想查看不同jd ...

  4. python 超参数_完整介绍用于Python中自动超参数调剂的贝叶斯优化

    完整介绍用于Python中自动超参数调剂的贝叶斯优化-1.jpg (109.5 KB, 下载次数: 0) 2018-7-4 23:45 上传 调剂机器学习超参数是一项繁琐但至关重要的任务,因为算法的性 ...

  5. mysql使用()文件中的配置参数_MySQL使用( )文件中的配置参数。 答案:my.ini

    下中谓"口"村头文状不正者是也:水口为一教之存性为有标 黄骨髓中:当长骨之骨髓腔内 高斯素贝叶斯分类器具()谋面也:再策面 色渐之方不可移也:× 学院与区一建定了一房楼之作合生,学 ...

  6. java settings文件夹_JAVA工具例大全--Setting文件读取配置参数

    用类cn.hutool.setting.AbsSetting的如下方法:getDouble public Double getDouble(String key, String group) 获取do ...

  7. 在AngularJS中读取查询参数的最简洁方法是什么?

    本文翻译自:What's the most concise way to read query parameters in AngularJS? I'd like to read the values ...

  8. 为了避免360等浏览器的页面缓存影响到系统的参数,可以在对应页面中添加随机参数。

    为了避免360等浏览器的页面缓存影响到系统的参数,可以在对应页面中添加随机参数. 如window.open('text.aspx?rid='+ Math.round(Math.random() * 1 ...

  9. jmeter参数值只读取了第一个_Jmeter学习笔记-从文本中读取一个参数,多个值(7)...

    测试场景:插入多条数据时,某些关键字不能重复,从文件中读取其参数,可解决该问题. 1.CSV Data set config的配置如下图: Filename:需要传入的参数所位于的文件名称,一定要填写 ...

  10. Java|Kotlin, SpringBoot从配置文件中读取@KafkaListener参数配置

    springboot从配置文件中设置@KafkaListener参数配置 在java中使用占位符#{'${kakfa.topics}'}来进行参数注入 @KafkaListener(topics = ...

最新文章

  1. XML 与DataSet 对象的关系
  2. activiti实战系列 并行网关(parallelGateWay)
  3. Vue(小案例_vue+axios仿手机app)_实现用户评论
  4. 关于更新 Web 应用程序 URL 和 IIS 绑定
  5. 【转】谈谈Unicode编码,简要解释UCS、UTF、BMP、BOM等名词
  6. 兼容IE与firefox的css 线性渐变(linear-gradient)
  7. 【刷算法】字符串的全排列
  8. 设计模式(五):命令模式
  9. 【BZOJ1061】【codevs1803】志愿者招募,神奇建图费用流
  10. LVS负载均衡中arp_ignore和arp_annonuce参数配置的含义
  11. mysql 性能指标计算_干货|MySQL 性能指标及计算方法总结
  12. 抖音初始权重快速提升3大攻略,新人必看丨国仁网络资讯
  13. Ubuntu下连接共享打印机的方法
  14. centos静态ip天坑
  15. uva 10158 War
  16. 千峰 音乐播放器 待续
  17. 2020-04-13
  18. No enclosing instance of type FormDetailBean is accessible. Must qualify the allocation with an encl
  19. 2018腾讯游戏面试总结
  20. cplex小白感悟—前言

热门文章

  1. VOSviewer使用方法(详细便捷)附下载网址
  2. 8-BIT OPTIMIZERS VIA BLOCK-WISE QUANTIZATION--通过块级量化的8位优化器
  3. 《那些年啊,那些事——一个程序员的奋斗史》八
  4. 联想笔记本关闭锁定计算机,联想笔记本电脑键盘锁了怎么解开
  5. linux 开机启动项文件夹,linux开机启动项设置
  6. linux系统vmd软件如何使用,科学网—VMD (linux下分子可视化软件) - 刘雪静的博文...
  7. 最快的滚屏截图软件--SpaceCapture
  8. 张宇1000题高等数学 第十三章 多元函数微分学
  9. 考研高等数学张宇30讲笔记——第八讲 一元函数积分学的概念与计算
  10. java wsdl 服务端代码_wsdl2java 生成 webservice服务端代码: