文档章节

【一】Scala Configuration 相关API

Landas
 Landas
发布于 07/21 12:16
字数 506
阅读 34
收藏 0

        Play使用了 Typesafe config library,但是也提供了一个有着更多Scala高级特性的的 Configuration 封装。不熟悉Typesafe配置的开发者可以移步 configuration文件的语法和特性文档

读取配置文件

        通常你可以通过依赖注入来获取 Configuration 对象,或者你可以简单的向 Component 传递一个 Configuration 实例。

class MyController @Inject() (config: Configuration, c: ControllerComponents) extends AbstractController(c) {
  def getFoo = Action {
    Ok(config.get[String]("foo"))
  }
}

         get方法返回一个配置文件中的 value,这正是最常用方法 ~~

// foo = bar
config.get[String]("foo")

// bar = 8
config.get[Int]("bar")

// baz = true
config.get[Boolean]("baz")

// listOfFoos = ["bar", "baz"]
config.get[Seq[String]]("listOfFoos")

        注意这里接受一个隐含的 implicit ConfigLoader,但是对于常见的 StringIntSeq[String]类型相关 loader 已经预定义好了。

Configuration 同样支持对一组有效value值的校验:

config.getAndValidate[String]("foo", Set("bar", "baz"))

ConfigLoader

        通过自定义ConfigLoader,你可以简单的将配置转换为自定义类型。Play自身内部也是这样做的,尤其是它可以在使用 configuration 时带来更多类型安全的校验。如下:

case class AppConfig(title: String, baseUri: URI)
object AppConfig {

  implicit val configLoader: ConfigLoader[AppConfig] = new ConfigLoader[AppConfig] {
    def load(rootConfig: Config, path: String): AppConfig = {
      val config = rootConfig.getConfig(path)
      AppConfig(
        title = config.getString("title"),
        baseUri = new URI(config.getString("baseUri"))
      )
    }
  }
}

        然后你可以这样使用config.get:

// app.config = {
//   title = "My App
//   baseUri = "https://example.com/"
// }
config.get[AppConfig]("app.config")

可选的configuration键

        Play的 Configuration 支持通过 getOptional[A] 方法获取可选的键。使用上和 get[A] 基本类似,但是在键不存在时它将返回 None。我们更推荐的做法是在配置文件中对键设置null值,然后通过 get[Option[A]] 来访问。我们提供的这种方式主要用是来读取那些历史遗留的配置文件。: )

© 著作权归作者所有

Landas
粉丝 5
博文 35
码字总数 62368
作品 0
深圳
程序员
私信 提问
spark streaming从指定offset处消费Kafka数据

一、情景:当Spark streaming程序意外退出时,数据仍然再往Kafka中推送,然而由于Kafka默认是从latest的offset读取,这会导致数据丢失。为了避免数据丢失,那么我们需要记录每次消费的offse...

刺猬一号
07/19
0
0
Slick 3.0.0 RC1 发布,Scala 数据库访问层

Slick 是 TypeSafe 推出的 Scala 数据库访问库。开发者可以使用 Scala 语言风格来编写数据查询,而不是用 SQL,示例代码: Scala Slick 3.0.0 RC1 发布,源代码现已提供在:https://github....

oschina
2015/02/24
2.3K
2
playframework 2.x 自定义routes文件报错:Router not found: conf/sanguosha

我把默认的routes(conf/routes)文件删除了 然后,新建了一个conf/sanguosha 文件 然后,在application.conf里面配置了 application.router=conf/sanguosha 运行,却报错了: play.api.Con...

西夏一品堂
2014/05/01
601
0
Apache Kafka 2.0.0 正式发布,分布式消息发布订阅系统

Apache Kafka 2.0.0 已正式发布,这是一个主要版本,新增了许多重要的新功能。此外还包括许多重要的 bug 修复和改进,其中还包括一些严重的错误修复。 Apache Kafka 2.0.0 下载地址 >>> http...

局长
07/31
4.4K
8
spark Local环境搭建,第一个DEMO程序的编写

spark Local环境搭建,第一个DEMO程序的编写 机器:windows 10 64位。 开发语言: Java JDK: 1.8. 1.spark,hadoop环境标题变量配置 去 http://spark.apache.org/downloads.html 网站下载spark...

Zhao-Qian
2016/06/13
270
0

没有更多内容

加载失败,请刷新页面

加载更多

PHP生成CSV之内部换行

当我们使用PHP将采集到的文件内容保存到csv文件时,往往需要将采集内容进行二次过滤处理才能得到需要的内容。比如网页中的换行符,空格符等等。 对于空格等处理起来都比较简单,这里我们单独...

豆花饭烧土豆
今天
2
0
使用 mjml 生成 thymeleaf 邮件框架模板

发邮件算是系统开发的一个基本需求了,不过搞邮件模板实在是件恶心事,估计搞过的同仁都有体会。 得支持多种客户端 支持响应式 疼彻心扉的 outlook 多数客户端只支持 inline 形式的 css 布局...

郁也风
今天
8
0
让哲学照亮我们的人生——读《医务工作者需要学点哲学》有感2600字

让哲学照亮我们的人生——读《医务工作者需要学点哲学》有感2600字: 作者:孙冬梅;以前读韩国前总统朴槿惠的著作《绝望锻炼了我》时,里面有一句话令我印象深刻,她说“在我最困难的时期,...

原创小博客
今天
4
0
JAVA-四元数类

public class Quaternion { private final double x0, x1, x2, x3; // 四元数构造函数 public Quaternion(double x0, double x1, double x2, double x3) { this.x0 = ......

Pulsar-V
今天
18
0
Xshell利用Xftp传输文件,使用pure-ftpd搭建ftp服务

Xftp传输文件 如果已经通过Xshell登录到服务器,此时可以使用快捷键ctrl+alt+f 打开Xftp并展示Xshell当前的目录,之后直接拖拽传输文件即可。 pure-ftpd搭建ftp服务 pure-ftpd要比vsftp简单,...

野雪球
今天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部