首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Guice如何注入typesafe配置?

Guice如何注入typesafe配置?
EN

Stack Overflow用户
提问于 2020-01-16 19:20:02
回答 1查看 533关注 0票数 1

最近,我正在阅读一些scala代码,它使用Guice注入Typesafe Config。在我看来,这是一种魔法。我的问题是,如何解释这段代码?Guice是否将在sbt-程序集中读取的所有配置值自动注入类型设置?

Scala代码:

代码语言:javascript
复制
class FooImpl @Inject() (
  config: Config
) extends Foo {

  private val myConfig = "section.foo"

  override val batchSize = config.getInt(s"$myConfig.batchSize")

  .....
}

在Setting.scala中

代码语言:javascript
复制
object Settings {
    ...
    assemblyMergeStrategy in assembly := {
      case "prod.conf" => MergeStrategy.concat
      case x =>
        val oldStrategy = (assemblyMergeStrategy in assembly).value
        oldStrategy(x)
    }
  ...

在prod.conf中

代码语言:javascript
复制
section {

  foo {
    batchSize = 10000
...
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-01-17 03:48:20

我想你在这里混合了三种不同的机制

  1. @Inject确实是Guice,这是这个过程中的最后一步。简单地说,Guice有一个“依赖注入容器”,它知道在哪里查找某些类型的实例。它知道的一种类型是Config。它如何知道这取决于您正在使用的框架(如果不使用,则如何实例化Guice容器);
  2. Typesafe配置有在哪里查找配置的规则。自述总结得很好,但简而言之,它在资源文件夹(实际上是类路径中的任何地方)中找到application.conf,然后导入application.conf显式导入的所有其他文件(使用import other_conf.conf)。我假设在你的例子中,import prod.confapplication.conf的某个地方
  3. 程序集--只需将所有依赖项中的所有资源放入一个巨大的资源文件夹中--指定在同名多个文件的情况下该如何处理的规则。在您的例子中,它告诉它只需要将它们连接起来。
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59776438

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档