gpt4 book ai didi

java - 后端的 CDI?

转载 作者:行者123 更新时间:2023-11-30 06:25:29 25 4
gpt4 key购买 nike

我的任务是通过使用 new 关键字和本地托管实体管理器来重构一个旧应用程序,该应用程序用于在各处创建 DAO。

现在我应该使用 JTA 来管理连接。据我所知,我应该使用 CDI。到目前为止还没有出现问题。我的 View 是 CDI View ,并且我 @Inject 所有 DAO,或者在其他情况下 @Inject 使用 DAO 的整个 Controller ,如下例所示。

@CDIView(value = TestView.VIEW_ID)
public class TestView extends Test implements View {
public static final String VIEW_ID = "testviewer";

@Inject
private
TestInterface testInterface;

public void viewLogic() {

...
}

虽然这一切都很顺利,但我开始担心了。因为在幕后有很多线程同时运行。这些线程需要它们自己的对象实例,因此不能被注入(inject)——或者可以吗?一个例子是:

@Stateless
public class TestInterface {

@Inject
TestDAO testDAO;



private List<TestRunner> getTestRunners(Test test, ToplevelTest tlt){
List<TestRunner> runners = new ArrayList<>();
for(SomeThing st : getTestSomethings()){
if(st.condition())
runners.add(new AbstractTestRunner());
else runners.add(new FancyTestRunner());

}
}

private SomeDataAccess(){
testDAO.save(new Test());
}

这个示例代码将在托管 bean 中执行,这很好(我认为!),但是这些测试运行程序还需要访问数据访问层。但我需要(一个变量)这些的多个实例。

我读到您可以使用 CDI.current().get(MySingletonClass.class)获取一个单例存储库以用作这些测试运行程序中的数据访问,然后像以前一样"new"测试运行程序,这是一个好主意(并且可能吗?)?

或者有更好的方法来处理这一切吗?

所有建议都会受到热烈欢迎。我对 CDI 还很陌生。

致以诚挚的问候

最佳答案

您可以使用更“原始”的依赖注入(inject)方法,将 MySingletonClass 的实例传递到 TestRunners 构造函数中。

关于java - 后端的 CDI?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47288692/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com