All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.ecfront.common.ConfigHelper.scala Maven / Gradle / Ivy

There is a newer version: 1.2.3
Show newest version
package com.ecfront.common

import java.io.File

import com.fasterxml.jackson.databind.JsonNode
import com.typesafe.scalalogging.slf4j.LazyLogging

import scala.io.Source

/**
 * 配置文件获取辅助类
 */
object ConfigHelper extends LazyLogging {

  //系统属性名称
  private val SYS_PROP_CONFIG = "config"

  /**
   * 获取属性文件
   * @param configPath  配置文件全路径
   * @param configClazz 要转换成的对象类型,默认为JsonNode
   * @tparam E  要转换成的对象类型
   * @return 配置文件对象
   */
  def initFromURL[E](configPath: java.net.URL, configClazz: Class[E] = classOf[JsonNode]): Option[E] = {
    if (configPath != null) {
      init(configPath.getPath, configClazz)
    } else {
      init("", configClazz)
    }
  }

  /**
   * 获取属性文件
   * @param configPath  配置文件全路径
   * @param configClazz 要转换成的对象类型,默认为JsonNode
   * @tparam E  要转换成的对象类型
   * @return 配置文件对象
   */
  def init[E](configPath: String, configClazz: Class[E] = classOf[JsonNode]): Option[E] = {
    val realConfigPath = if (System.getProperties.containsKey(SYS_PROP_CONFIG)) System.getProperty(SYS_PROP_CONFIG) else configPath
    if (new File(realConfigPath).exists()) {
      val configStr = Source.fromFile(realConfigPath, "UTF-8").mkString
      val config = if (configClazz.isInstance(classOf[JsonNode])) JsonHelper.toJson(configStr) else JsonHelper.toObject(configStr, configClazz)
      if (config == null) {
        logger.error("The Config [" + realConfigPath + "] parse error!")
        null
      } else {
        logger.info("The Config [" + realConfigPath + "] has bean  initialization!")
        Some(config.asInstanceOf[E])
      }
    } else {
      logger.error("The Config [" + realConfigPath + "] NOT found!")
      null
    }
  }

}





© 2015 - 2025 Weber Informatics LLC | Privacy Policy