문제

이제 주어진 유형의 여러 인스턴스가 필요한 Guice 기반 앱이 있으므로 의존성을 명확하게하기 위해 명명 된 주석을 사용하여 계획합니다. 그러나이 유형의 종속성은 내가 얻는 것에 따라 달라야합니다.

설명하기 위해 내가 가지고 있다고 가정 해 봅시다

@Singleton
public class FooCache {
    private final FooCacheListener listener;
    @Inject 
    public FooCache(FooCacheListener listener) {
        this.listener = listener;
    }
    // do stuff
}

그런 다음 2 개의 별도 인스턴스가 필요하다고 가정 해 봅시다.

@ThatOne FooCache

한 수업에서

@ThisOne FooCache

또 다른.

이제 각 경우에 다른 청취자를 원한다고 가정 해 봅시다 (아마도 데이터베이스에 무언가를 쓰고 다른 하나는 JMS 또는 일부 분산 캐시에 알림을 보냅니다). 어떻게할까요? 나는 한 상황에서 다른 이름과 다른 상황에서 다른 이름이 필요하기 때문에 foocachelistener에 이름을 붙일 수 있다는 것을 알 수 없습니다. 내가이 일을 할 수있는 유일한 방법은 Foocache를 서브 클래스하는 것이지만 그것은 나에게 정말 서투른 접근 방식 인 것 같습니다.

건배 매트

도움이 되었습니까?

해결책

privatemodules를 사용할 수 있습니다. 가다 여기 아래로 스크롤하십시오 비슷하지만 약간 다른 두 나무의 물체를 만드는 방법은 무엇입니까? 동일한 클래스의 두 가지 인스턴스를 갖는 방법입니다. 거의 정확히 당신이하려고하는 것입니다. 예제에서 전달 된 "왼손잡이"와 "Righty"대신 CachElisteners를 통과 할 수 있습니다. 원하는 것처럼 보이면 세부 사항이 더 많은 링크가 있습니다.

또 다른 옵션은 문제에서 위의 링크에서 논의되는 공장을 주입하는 것일 수 있습니다. Guice를 통해 객체를 만들 때 매개 변수를 어떻게 전달합니까?

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top