Что означает, когда Weld говорит «неудовлетворительная зависимость для типа Foo», когда bean is POJO, но как только я добавляю @Dependent
вверху, все работает нормально? Я помню, что он работал нормально, без указания области. Кажется, я что-то сломал.CDI bean не обнаруживается, если явно не аннотируется
Спецификации говорят:
управляемый компонент реализуется классом Java, который называется его класс боба. Класс Java верхнего уровня является управляемым компонентом, если он определен как управляемый компонент любой другой спецификации технологии Java EE, такой как спецификация технологии JavaServer Faces, или если она отвечает всем следующим условиям.
Это не нестатический внутренний класс.
Это конкретный класс или аннотированный @Decorator.
Он не аннотируется с помощью аннотации, определяющей компонент EJB, или объявлен как класс EJB bean в ejb-jar.xml.
У этого есть соответствующий конструктор. То есть, одно из следующего имеет место.
Класс имеет конструктор без параметров.
Класс объявляет конструктор аннотированный @Inject.
Нет специальной декларации, такие как аннотации, необходимо определить управляемый компонент.
Из какой спецификации вы процитировать? Управляемые бобы или CDI? Есть разница. –
В чем разница? – gurghet
Это из спецификации CDI. Подумайте о Managed Beans как (супер) классах с функциями по умолчанию и CDI-компонентами в качестве специализированной (дочерней) версии суперкласса Managed Bean. Да, вам не нужно аннотации для определения управляемого компонента. Действующий управляемый компонент пользуется следующими услугами, предоставляемыми ему управлением контейнером - жизненным циклом, введением ресурсов и перехватчиками. CDI строится поверх спецификации управляемых компонентов и предоставляет дополнительные услуги - в основном, инъекцию контекстной зависимости. Чтобы преобразовать простой управляемый компонент в CDI-компонент, вам необходимо определить специфические аннотации CDI – Abhishek