guice가 호출되지 않은 Injector
클래스를 공급자와 함께 사용하기 위해 호출하는 인젝터 인스턴스에 바인드하는 것과 비슷한 방식으로 guice에 일부 매개 변수를 바인딩하고 싶습니다. 특히정적으로 바인딩 된 매개 변수로 google guice 사용
, 우리의 프로젝트에서 우리는이 개체는 우아하게이 나타내는 자원에 "COM-경로"(클래스 상대 리소스 경로를) 변환하는 우리를있게, 효과적으로 방법 Class.getClassLoader().getResource()
에 대한 래퍼입니다, 물체가 ResourceEnvironment
라는이 (FXML 파일, 이미지 파일 등). 우리는이 도구를 사용하여 jar 파일 내에 배포 된 리소스를로드합니다.
는 지금이 코드는 주파수의 엄청난 양을 반복한다 :
Class ClazzX{
private final ResourceEnvironment env;
@Inject
public ClazzX(ResourceEnvironment.Factory envFactory){
env = envFactory.create(this.getClass())
}
}
내가 정말하고 싶은 것이 훨씬 더 간단 :
Class ClazzX{
private @Inject ResourceEnvironment env;
}
는하지만, 그렇게, 나는 공급자를 필요로 할 것입니다 :
binder.install(new Module(){
@Provides ResourceEnvironment getResourceEnv(Injector callingInjector){
Class targetClazz = callingInjector.getDependencyBeingResolved(); //not a real method
ResourceEnivonment.Factory factory = callingInjector.getInstance(RE.F.class)
return factory.create(targetClazz);
}
});
cur 런타임에 인젝터를 통해 임대료가 결정됩니까?