服务外部注入的javax.annotation.Injected始终为空
我有一个WildFly服务器(没有Spring),其中一个类需要注入。大概是这样的:服务外部注入的javax.annotation.Injected始终为空,java,dependency-injection,wildfly,java-ee-8,Java,Dependency Injection,Wildfly,Java Ee 8,我有一个WildFly服务器(没有Spring),其中一个类需要注入。大概是这样的: class Foo { @Inject private MyInterface myInterface; ... } 但是,每次创建类时,myInterface都为空。类Foo不是在任何服务类内创建的,而是从服务类进行调用。要简化: 服务调用(特定于wsdl)→ 调用来自其他类的静态方法→ 该方法创建Foo 实现MyService的类用@Named和@ApplicationScoped
class Foo {
@Inject
private MyInterface myInterface;
...
}
但是,每次创建类时,myInterface
都为空。类Foo
不是在任何服务类内创建的,而是从服务类进行调用。要简化:
服务调用(特定于wsdl)→ 调用来自其他类的静态方法→ 该方法创建Foo
实现
MyService
的类用@Named
和@ApplicationScoped
注释。当带有MyInterface
的@Inject
在服务类中时(与Foo
中的代码完全相同),它被正确注入。但不适用于非服务类。类Foo是CDI还是EJB?它不是EJB,所以应该是CDI,它是用@JamesR.Perkins注释的Foo
,它没有任何注释。应该用什么东西注释吗?是的。为了使CDI正常工作,需要管理所有bean。你不能像newfoo()
那样让CDI工作。它需要管理所有相关组件的生命周期。