避免硬编码[通俗易懂]

避免硬编码[通俗易懂]第一种publicinterfaceConstants{/***SparkApplicationConstants*/StringSEPARATOR=””;StringSQLTYPE=”‘通话'”;}第三种importjava.util.Propertiesimport…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

 

第一种
public interface Constants {

    /**
     * Spark Application Constants
     */
    String SEPARATOR = "   ";
    String SQLTYPE = "'通话'" ;
}
第三种

 

import java.util.Properties
import java.io.FileInputStream

//test.properties 里的内容为"ddd=5.6,1.2"

def loadProperties():Unit = {
  val properties = new Properties()
  val path = Thread.currentThread().getContextClassLoader.getResource("test.properties").getPath //文件要放到resource文件夹下
  properties.load(new FileInputStream(path))
  println(properties.getProperty("ddd"))//读取键为ddd的数据的值
  println(properties.getProperty("ddd","没有值"))//如果ddd不存在,则返回第二个参数
  properties.setProperty("ddd","123")//添加或修改属性值
}

第二种

Typesafe的Config库,纯Java写成、零外部依赖、代码精简、功能灵活、API友好。支持Java properties、JSON、JSON超集格式HOCON以及环境变量。ConfigFactory.load()会加载配置文件,默认加载classpath下的application.conf,application.json和application.properties文件。当然也可以调用ConfigFactory.load(confFileName)加载指定的配置文件,配置文件在resource文件夹中。

配置内容即可以是层级关系,也可以用”.”号分隔写成一行:

[java] view plain copy

  1. host{  
  2.   ip = 127.0.0.1  
  3.   port = 2282  
  4. }  

或则

 

[java] view plain copy

  1. host.ip = 127.0.0.1  
  2. host.port = 2282  

即json格式和properties格式。(貌似*.json只能是json格式,*.properties只能是properties格式,而*.conf可以是两者混合,而且配置文件只能是以上三种后缀名)

如果多个config 文件有冲突时,解决方案有:
1. a.withFallback(b) //a和b合并,如果有相同的key,以a为准 
2. a.withOnlyPath(String path) //只取a里的path下的配置
3. a.withoutPath(String path) //只取a里出path外的配置
例如:

 

[java] view plain copy

  1. Config firstConfig = ConfigFactory.load(“test1.conf”);  
  2. Config secondConfig = ConfigFactory.load(“test2.conf”);  
  3.   
  4. //a.withFallback(b)  a和b合并,如果有相同的key,以a为准  
  5. Config finalConfig = firstConfig.withOnlyPath(“host”).withFallback(secondConfig);  

finalConfig中的配置是test1.conf中的host节点的所有配置与test2.conf所有节点的配置合集。

 

 

 

举例:

 

import com.typesafe.config.ConfigFactory
//HOST="fjls"
object Test {
  def main(args: Array[String]): Unit = {
    val config = ConfigFactory.load()
    println(config.getString("HOST"))
  }
}

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/180145.html原文链接:https://javaforall.net

(0)
上一篇 2022年10月19日 下午8:00
下一篇 2022年10月19日 下午8:16


相关推荐

  • Java程序设计(基础)- 数据类型

    Java程序设计(基础)- 数据类型

    2021年7月21日
    60
  • 安装weditor报错

    安装weditor报错安装 weditor 报错

    2026年3月18日
    2
  • 将一个字符串对象数组转化为List<对象>

    将一个字符串对象数组转化为List<对象>Stringst Gsongson newGson TypelistType newTypeToken getType ListSearchMo gson fromJson st listType maven 依赖 dependencyg

    2026年3月18日
    1
  • 前端面试八股文(超详细)

    前端面试八股文(超详细)JavaScript 1 Promise 的理解 Promise 是一种为了避免回调地狱的异步解决方案 2 Promise 是一种状态机 pending 进行中 fulfilled 已成功 和 rejected 已失败 只有异步操作的结果 可以决定当前是哪一种状态 任何其他操作都无法改变这个状态 回调地狱回调函数中嵌套回调函数的情况就叫做回调地狱 回调地狱就是为是实现代码顺序执行而出现的一种操作 它会造成我们的代码可读性非常差 后期不好维护 一 Promise 是什么 Promise 是最早

    2026年3月17日
    1
  • 【Java】线程基本使用——实现 Runnable接口

    【Java】线程基本使用——实现 Runnable接口实现 Runnable 接口说明 java 是单继承的 在某些情况下一个类可能已经继承了某个父类 这时在用继承 Thread 类方法来创建线程显然不可能了 java 设计者们提供了另外一个方式创建线程 就是通过实现 Runnable 接口来创建线程应用案例请编写程序 该程序可以每隔 1 秒 在控制台输出 hi 当输出 10 次后 自动退出 请使用实现 Runnable 接口的方式实现 这里底层使用了设计模式 代理模式 gt 代码模拟实现 Runnable 接口开发线程的机制

    2026年3月19日
    2
  • 软件工程——瀑布模型、快速原型模型、增量模型、螺旋模型

    软件工程——瀑布模型、快速原型模型、增量模型、螺旋模型目录一 瀑布模型 1 1 什么是瀑布模型 1 2 特点 1 3 优缺点 1 4 客户需求二 快速原型模型 2 1 什么是快速原型模型 2 2 优缺点 2 3 快速原型模型的思想产生 原理及运用方式 2 4 类型 2 5 开发步骤三 增量模型 3 1 什么是增量模型 3 2 特点 3 3 优缺点 3 4 作用四 螺旋模型 4 1 什么是螺旋模型 4 2 特点 4 3 优缺点 4 4

    2026年3月20日
    4

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号