避免硬编码

 

第一种
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"))
  }
}

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值