【发布时间】:2025-12-02 02:45:01
【问题描述】:
我有一个 WildFly 服务器(没有 Spring),其中一个类需要进行注入。像这样的:
class Foo {
@Inject
private MyInterface myInterface;
...
}
但是每次创建类时myInterface 为空。 Foo 类不是在任何服务类中创建的,但调用是从服务类发生的。为了简化:
服务调用(具体为wsdl)→调用其他类的静态方法→该方法创建Foo的实例
实现MyService的类用@Named和@ApplicationScoped注解。当@Inject 和MyInterface 在服务类中时(与Foo 中的代码完全相同),它会被正确注入。但不适用于非服务类。
【问题讨论】:
-
类 Foo 是 CDI 还是 EJB?
-
不是EJB,应该是CDI
-
Foo是用什么注解的? -
@JamesR.Perkins 它没有任何注释。是不是应该加注解?
-
是的。要使 CDI 工作,所有 bean 都需要进行管理。 IoW 你不能做像
new Foo()这样的事情并让 CDI 工作。它需要管理所有相关组件的生命周期。
标签: java dependency-injection wildfly java-ee-8