Возможно, слишком много часов расчесывания через CDI 1.0 specification, но я не смог найти подробное описание того, где именно требуется META-INF/beans.xml
.Для инъекций CDI мне нужен META-INF/beans.xml в архиве производителя И в архиве инъекций?
(The section on bean discovery делает несколько интригующих заявлений, которые подразумевают определенные вещи, но я не уверен, если это предписывающее.)
Я понимаю, что грубо говоря любой архив боба нуждается.
Но рассмотрит случай со следующими баночками в совместимом CDI 1.0 среды:
- интерфейса баночка, содержащие интерфейсы только
- баночка реализации содержащих CDI боб, которые реализуют эти интерфейсы, и что функция
@Inject
точки впрыска, но не методы производства - A производитель jar, содержащий (для простоты) один объект Java w с единственным методом, который был аннотирован
@Produces
.
Представляется логичным, что и производителя банке и банка реализации бы должны быть боб архивами, и поэтому, следовательно, будет каждая потребность META-INF/beans.xml
ресурсов, содержащихся в них.
Но для полноты, это действительно так? Поскольку в блоке ввода используется только точка @Inject
и нет аннотаций CDI, будет ли она проверяться другими способами? Другим способ посмотреть на него: в этом примере, баночка реализации используется только в качестве целевой для инъекций, не источника из инъекционных. Поэтому я мог видеть какую-то логику, которая могла бы сказать: посмотрите, только баночки, которые производят бобы, которые могут быть введены . должны быть объявлены как бин-архивы. (Я не говорю, что это правда, просто я мог видеть, что этот аргумент был сделан.)
Наконец, есть проблема с галькой интерфейса . По определению он не содержит бобы, но я давно видел случаи с GlassFish, где даже интерфейс jar должен был иметь файл META-INF/beans.xml
. Это кажется мне неправильным, но я с удивлением обнаружил, что не могу найти раздел в спецификации, чтобы подтвердить или опровергнуть это.
So: beans.xml
всюду? Только в баночках для инъекций? Только в камерах для инъекций? Или...?