Я использую сварку в качестве контейнера CDI. Кроме того, я использую osgi (felix). Так что это javase + felix + weld + pax. У меня есть следующий beans.xmlCDI: bean-discovery-mode = аннотированный игнорируется
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/beans_1_0.xsd"
bean-discovery-mode="annotated">
</beans>
И у меня есть два класса:
@ApplicationScoped
public class A {
@Inject
private B b;
public void postCreate(@Observes ContainerInitialized event, BundleContext ctx) {
b.test();
}
}
А класс B
public class B{
public void test(){
System.out.println("test is here");
}
}
Как вы видите, класс B не имеет @scopes или @ независимых аннотаций. Однако, когда я запускаю объект приложения класса B, вставляется в объект A и вызывается метод test. Зачем? Насколько я понимаю, его нельзя вводить.
EDIT 1
Я пытался использовать версии 1.1:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
http://xmlns.jcp.org/xml/ns/javaee/beans_1_1.xsd"
bean-discovery-mode="annotated" version="1.1">
</beans>
, но это не помогло.
Вы используете версию 1.x сварного шва, который реализует CDI 1,0? –
@Sebastian S Я использую версию 2.2.10, которая реализует CDI 1.1. –