У меня возникла проблема с введением правильного компонента в случае многократной реализации одного и того же интерфейса ( 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
ошибка.
Есть ли у вас какие-либо идеи из приведенного выше фрагмента кода, является ли это правильным способом внедрения зависимости?
Спасибо за ваш ответ, не стесняйтесь редактировать этот вопрос, если хотите.