当前位置: 首页 > 面试题库 >

如何从Guice的注射器中获取带注释的实例?

楚天宇
2023-03-14
问题内容

假设我有一个模块:

Module extends AbstractModule
{
  @Override
  protected void configure()
  {
    bind(String.class).
      annotatedWith(Names.named("annotation")).
        toInstance("DELIRIOUS");
  }
}

我想测试模块并检查它是否在没有类和字段但直接从注入器获取值的带String注释的字段中注入正确的值Names.named("annotation")

@Test
public void test()
{
  Injector injector = Guice.createInjector(new Module());

  // THIS IS NOT GOING TO WORK!
  String delirious = injector.getInstance(String.class);

  assertThat(delirious, IsEqual.equalTo("DELIRIOUS");
}

问题答案:
injector.getInstance(Key.get(String.class, Names.named("annotation")));


 类似资料:
  • 我使用< code>Cucumber和< code>Guice作为DI。我遇到了以下问题:我有一个步骤,即 我让这个类作为测试运行它 有一个 由我的使用,我定义了cucumber.properties,我定义了还有一个包含方案的功能文件。现在一切都在工作。 不,我想使用其他MyService实现运行MyStep步骤(当然我不会重复MyStep的代码)我定义了一个具有新场景和新测试类的新功能文件 现

  • 我有一门课,比如下面的测试 有一个C1班 我给这门课打电话如下 当我调试时,我将i1设置为null。 请告知我做错了什么 注意:。我必须在xyx()中使用类Test,因为它是伪代码,并且xyx()中有很多代码

  • 基本上我的问题归结为如何让这个测试通过: 但也许我错过了重点:堆栈溢出会让你相信做我正在做的事情是一种罪过(介绍引用喷油器的工厂,当你要求他们制造产品时,他们只是转发给你),而我正在做的是接近服务定位器,这是一个糟糕的举动。但我看不出解决这个问题的方法。 我有一个名为“可视化”的接口,它有7个实现者。运行时,根据您的数据集,我们选择一组可视化工具来创建和呈现。对于有注入器字段的工厂,我只需添加一个

  • 我对使用Guice有疑问。我有一个名为< code>Main的类,它是使用Guice和一个方法注入的构造函数,每次调用该方法都会创建一个类< code>AppThread的o thread对象。< code>AppThread是< code>Main中的私有类。问题是,在线程的执行过程中,我想创建一个class 的对象。此对象是使用Guice注入的构造函数。我不知道注入< code>ClassX的

  • 我有一个Maven模块,我在其中定义了一些跨其他几个Maven模块共享的UTIL。在本模块中,我想创建一些单例: 然后我将我的界面绑定到: 假设我想使用另一个Maven模块(比如web服务)中的这个单例,我该如何实现呢?我找到的唯一方法是在util Maven模块中创建一个类,如: 或者,我可以在Guice教程中看到的静态main方法中创建注入器,并将实例保存在某个地方。 然后从我的Web服务中执

  • 我有一个kotlin类,它的属性有一个Java的注释,但是我不能用Java反射访问这些注释: 以下测试打印为空: 如何获取给定kotlin属性的注释?