반응형
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
반응형
'program story' 카테고리의 다른 글
Windows 응용 프로그램에서 상대 경로를 절대 경로로 변환하는 방법은 무엇입니까? (0) | 2020.10.09 |
---|---|
활동을 포 그라운드로 가져 오는 방법 (스택 맨 위)? (0) | 2020.10.09 |
DBMS_OUTPUT.PUT_LINE이 인쇄되지 않습니다. (0) | 2020.10.09 |
? :,?!의 차이점은 무엇입니까? (0) | 2020.10.09 |
열에 'hsa ..'와 같은 문자열이있는 행 선택 (부분 문자열 일치) (0) | 2020.10.09 |