7.3.2. 한정자를 사용하여 모호한 주입 해결
한정자를 사용하여 모호한 주입을 해결할 수 있습니다. 모호한 또는 불만족스러운 종속성에서 모호한 주입에 대해 자세히 알아보십시오.
다음 예제는 모호한 예이며 두 개의 Welcome 구현이 있습니다. 하나는 변환되고 그렇지 않은 것입니다. Welcome(환영)을 사용하려면 삽입을 지정해야 합니다.
예제: 모호한 주입
public class Greeter {
private Welcome welcome;
@Inject
void init(Welcome welcome) {
this.welcome = welcome;
}
...
}
한정자를 사용하여 모호한 주입 해결
모호한 주입을 해결하려면
@Translating:@Qualifier @Retention(RUNTIME) @Target({TYPE,METHOD,FIELD,PARAMETERS}) public @interface Translating{}@Translating주석을 사용하여 TranslationWelcome에 주석을 답니다.@Translating public class TranslatingWelcome extends Welcome { @Inject Translator translator; public String buildPhrase(String city) { return translator.translate("Welcome to " + city + "!"); } ... }삽입에
환영을요청하십시오. 팩토리 방법 패턴과 유사하게 정규화된 구현을 명시적으로 요청해야 합니다. 주입 지점에서 모호성이 해결됩니다.public class Greeter { private Welcome welcome; @Inject void init(@Translating Welcome welcome) { this.welcome = welcome; } public void welcomeVisitors() { System.out.println(welcome.buildPhrase("San Francisco")); } }