source

Guice의 인젝터에서 주석이 달린 인스턴스를 검색하려면 어떻게 해야 합니까?

lovecheck 2022. 11. 28. 21:16
반응형

Guice의 인젝터에서 주석이 달린 인스턴스를 검색하려면 어떻게 해야 합니까?

예를 들어 모듈이 있다고 합시다.

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")));

나는 다음과 같은 방법을 사용하고 있다.

public <T> T getInstance(Class<T> type, Class<? extends Annotation> option) {
    final Key<T> key = Key.get(type, option);
    return injector.getInstance(key);
}

이걸 위해서.일반적으로 주석 인스턴스를 만드는 데 문제가 있지만 여기서는Names.named("annotation")작동하다.

언급URL : https://stackoverflow.com/questions/5118082/how-to-retrieve-annotated-instance-from-guices-injector

반응형