누군가가 이미있을 수있는 상황에 있습니다. 응용 프로그램에서 GWTP를 사용하고 있습니다. GWTP는 GIN을 클라이언트 쪽 종속성 주입으로 사용하고 있습니다. 또한 GWTP는 서버 측에 요청을 보내기 위해 Dispatcher 메커니즘을 사용합니다.GWT - GIN - GWTP - 디스패처 주입 문제
이제는 GWTP에 의해 주입되는 몇 가지 클래스 (PRESENTERS)가 있습니다. 주입을하지 않고 런타임에 생성되는 "새로운"키 작업을 사용하는 다른 클래스가 있습니다. 예를 들어 보겠습니다 :
// Injected
class Dispatcher {
}
// Injected
Class A {
@Inject // I can do this and access the disp without any hurdle.
Dispatcher disp;
}
// Created using "new" keywork
class B {
//@Inject I can't do this because of B is not an injected class. Correct me if I am wrong here
Dispatcher disp;
}
그래서 주입되지 않은 클래스에서 주사 된 클래스에 액세스해야합니다. 내가 GWT.Create (Injector.class) 메서드를 사용해 보지 않았다고 생각할 수도 있습니다. 나는 그것을 시도해 보았지만 nonopected 클래스에서 그 객체를 얻을 수 있었지만 객체 Dispatcher는 그것의 기본 URL에 "/ dispatch /"를 증가 (추가)하는 어떤 다른 것이다. 즉, 내부적으로 사용하는 GWTP와 동일한 객체를 가질 필요가 있음을 의미합니다. 그리고 GWTP는 진입 점에 GIN INJECTOR를 만듭니다.
하나의 솔루션은 동일한 GIN INJECTOR를 클라이언트 측 세션 (정적 해시 맵)에 넣고 비 주입 클래스에서 사용하는 것입니다 (이 솔루션을 사용해도 매력적입니다).
나는 일할 수있는 완벽한 솔루션이 더 필요합니다.
미리 감사드립니다.
@ Luishmahou : 당신과 동의하십시오. 나는 양자 택일을 시도했다. 둘 다 그들의 자리에서 일했습니다. 그러나 첫 번째 대안은 내 상황에 더 적합하다고 생각합니다. 분리 관리자를 계층 구조 수준으로 전달하면 내게 훨씬 어려운 작업이 될 것이기 때문입니다. 그래서 정적 hashmap으로 클라이언트 쪽 세션을 생성하고 한 번 그 해시 맵에 MyInjector를 만들었습니다. 이제 원하는 인스턴스를 얻을 수 있습니다. 그러나 그것을 그것을하는 정확한 방법입니까 ???? –
해결책은 제 대답의 마지막 단락에 있습니다. 수업을 리팩터링하여 주입 할 수 있어야합니다. GIN을 사용하기 시작했을 때 나는 동일한 문제를 겪었고 주사기를 잡고 다른 응용 프로그램과 유사한 Dispatcher 및 유사한 인스턴스를 전달하기 위해 정적 변수를 사용했습니다. 그러나 이로 인해 구성 요소를 테스트하기가 어렵습니다.조금씩 나는 프로젝트를 리팩터링했고 이제는 모든 것이 주입되고 테스트 할 수 있습니다. – Luismahou
좋습니다. 내가 그 다음에 똑같은 일을 시키자 .... 감사합니다. –