当前位置: 首页 > 知识库问答 >
问题:

Scala Guice如何以字符串形式注入配置参数?

暨修洁
2023-03-14

我在 Java 中找到了以下代码,解释了如何使用 guice 很好地将配置参数注入为带注释的字符串参数。https://github.com/google/guice/wiki/FrequentlyAskedQuestions

我想做同样的事情,但在斯卡拉。你会怎么做?

请注意,我在寻找一个解决一般特征/类的方法。什么东西

trait Foo[T <- SomeOtherType] {}
class FooImpl[T <- SomeOtherType](val url: String) extend Foo[T] {}

我研究了辅助注射,但无法解决我的问题。

任何帮助都将不胜感激。谢谢

共有1个答案

丌官博文
2023-03-14

你可以用Scala做,就像用Java做一样。首先,定义注释:

/**
 * Annotates the URL of the foo server.
 */
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.FIELD, ElementType.PARAMETER})
@BindingAnnotation
public @interface FooServerAddress {}

注意,这是Java代码;你不能在Scala中定义运行时注释。

然后绑定一个用此注释注释的常量:

bindConstant().annotatedWith(classOf[FooServerAddress])

最后,你注射它:

class FooImpl[T] @Inject() (@FooServerAddress val url: String) extends Foo[T] {}

目标类的泛型在这里并不重要。

还有,如果把Guice和Scala一起用,可以考虑用Scala-Guice;除此之外,它还允许您省略这些笨拙的。

 类似资料:
  • 具体代码如下: 请大神帮忙看下,谢谢。

  • 我有一个名为的文件,它看起来像这样: 我想把那个文件作为字符串数组读入。这实际上在一个包中起作用: 我已经检查了每个导入,每个导入都被导入文件以外的其他东西使用。 在另一个包中,它忽略字符串插值: 在控制台中生成此输出: 唯一提到该文件的是 但是,将其复制到

  • 我试图编写一个Java例程,从值计算数学表达式,如下所示: 我想避免很多if-then-else语句。我怎么能这么做?

  • 我使用JSCH-SSH库在“shell”通道中执行命令,但无法找到一种方法来做两件事:- 1)如何查找命令是否在远程unix box上完全执行? 2)如何在String中捕获命令输出,而不是在System.out控制台上打印? 下面是我的代码片段,它可以很好地在系统上显示shell命令输出。出来 注意:我不想使用“exec”通道,因为它为每个命令启动一个新进程,并且不记得导出的“session”变

  • 在Dart中提供枚举之前,我编写了一些繁琐且难以维护的代码来模拟枚举,现在我想简化它。我需要以字符串形式获取枚举的名称,例如可以用Java完成,但不能。 例如,小测试代码片段返回'day。星期一“在每种情况下,我想要的是”星期一” 我是否正确,要获得“星期一”,我需要解析字符串?

  • 本文向大家介绍如何在Python中以字符串形式获取函数名称?,包括了如何在Python中以字符串形式获取函数名称?的使用技巧和注意事项,需要的朋友参考一下 每个函数都有一个名为__name__的属性。我们可以访问该属性并获取函数的名称。例如: 这将给我们输出: