我希望对 Java J2EE 应用程序进行一些重构,但我不清楚如何让 CDI 提供所需的依赖项:
当前的设置非常简单/易于理解:
@ApplicationScoped
public class MyApplication {
@Inject
@Named("Default")
private Dependency dependency;
public void dostuff(){
dependency.process();
}
}
现在,每次调用 dostuff
时,我都需要一个新的 dependency
实例。
我不清楚如何使用 CDI 为我创建这个。我的依赖项有自己的依赖项,我希望 CDI 为我创建这些依赖项。
我希望我需要添加一个间接层。
其他上下文: 此类是轮询要完成的工作的流程的一部分,并托管在 Wildfly 中。 我们没有在项目中使用Spring。
最佳答案
因为您想要的是 Dependency
的新实例,每次调用该方法时,我认为您需要的是 Provider
的实例即 ( javax.inject.Provider<T>
) 注入(inject)到你的类中/bean
.
将提供程序注入(inject)到您当前的类中:
@Inject Provider<DesiredBean> provider;
然后,在你的方法中 doStuff()
获取新实例:
DesiredBean desiredBean = provider.get();
这应该能让你继续前进。
关于Java EE CDI - 每次调用方法时获取类的新实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54372167/