7.3.2. 한정자를 사용하여 모호한 주입 해결

한정자를 사용하여 모호한 주입을 해결할 수 있습니다. 모호한 또는 불만족스러운 종속성에서 모호한 주입에 대해 자세히 알아보십시오.

다음 예제는 모호한 예이며 두 개의 Welcome 구현이 있습니다. 하나는 변환되고 그렇지 않은 것입니다. Welcome(환영)을 사용하려면 삽입을 지정해야 합니다.

예제: 모호한 주입

public class Greeter {
  private Welcome welcome;

  @Inject
  void init(Welcome welcome) {
    this.welcome = welcome;
  }
  ...
}

한정자를 사용하여 모호한 주입 해결
  1. 모호한 주입을 해결하려면 @Translating:

    @Qualifier
    @Retention(RUNTIME)
    @Target({TYPE,METHOD,FIELD,PARAMETERS})
    public @interface Translating{}
  2. @Translating 주석을 사용하여 Translation Welcome 에 주석을 답니다.

    @Translating
    public class TranslatingWelcome extends Welcome {
        @Inject Translator translator;
        public String buildPhrase(String city) {
            return translator.translate("Welcome to " + city + "!");
        }
        ...
    }
  3. 삽입에 환영을 요청하십시오. 팩토리 방법 패턴과 유사하게 정규화된 구현을 명시적으로 요청해야 합니다. 주입 지점에서 모호성이 해결됩니다.

    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"));
      }
    }