Внедрение зависимостей двух (или более) реализаций интерфейса - PullRequest
0 голосов
/ 05 июля 2019

У меня возникла проблема с введением правильного компонента в случае многократной реализации одного и того же интерфейса ( Java EE 7 ).

Я уже пробовал то, что написано в этом руководстве: https://docs.jboss.org/weld/reference/1.0.0/en-US/html/injection.html

public interface BookDescription {
    public String getDescription();
}

@ShortOne
public class BookDescriptionShortImpl implements BookDescription {

    @Override
    public String getDescription() {
    return "This is a short description";
    }
}

@LongOne
public class BookDescriptionLongImpl implements BookDescription {

    @Override
    public String getDescription() {
        return "This is a long, long description...";
    }
}

@Qualifier
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.METHOD, ElementType.FIELD, ElementType.PARAMETER, ElementType.TYPE})
@Documented
public @interface LongOne {
}

@Qualifier
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.METHOD, ElementType.FIELD, ElementType.PARAMETER, ElementType.TYPE})
@Documented
public @interface ShortOne {
}

public class Book {
    @Inject
    @LongOne
    private BookDescription bookDescription;
}

Когда я строю .war с Maven, я получаю:

Ambiguous dependencies for type BookDescription with qualifiers @Default ошибка.

Есть ли у вас какие-либо идеи из приведенного выше фрагмента кода, является ли это правильным способом внедрения зависимости?

Спасибо за ваш ответ, не стесняйтесь редактировать этот вопрос, если хотите.

...