2012-02-09 2 views
1

컨텍스트에 따라 다른 구현체를 bean에 삽입하고 싶습니다. 여기 상황 : 제조 환경에서이 AImplForProd되어야 동안JBoss Weld : 테스트를 위해 다른 구현체를 삽입하십시오.

interface A{} 

class AImplForTest implements A{} 

class AImplForProd implements A{} 

class B{ 
    @Inject A a; 
} 

테스트는 문맥에서, I는 AImplForTest 주입 싶습니다. B는 두 문맥에서 같은 클래스이다. 가능한가?

답변

1

실제로 사용되지는 않지만 이론에서는 @Alternative 주석을 사용할 수 있습니다. Weld reference documentation에서

:

대안 구현 특정 클라이언트 모듈 또는 배포 시나리오에 고유 한 콩입니다. ... 기본적으로 @Alternative beans는 비활성화됩니다. 에서 빈 아카이브의 beans.xml 설명자를 대체하여 인스턴스화 및 주입에 사용할 수 있도록해야합니다. 이 활성화는 해당 아카이브의 콩 에만 적용됩니다.

+0

그게 처음 시도한거야.하지만 프로젝트에서 내 소스를 찾고 다른 프로젝트에서 테스트 (및 AImplForTest)를 찾아야 만했다. 그러나 "아카이브"의 의미는 무엇입니까? 어쩌면 나는 정말로 그것이 무엇을 의미하는지 이해하지 못할 수도 있습니다 ... –

+0

아카이브는 WAR 또는 JAR입니다. –

관련 문제