gpt4 book ai didi

java - wildfly - 将 CDI 与 POJO 结合使用

转载 作者:行者123 更新时间:2023-12-01 08:57:01 26 4
gpt4 key购买 nike

我想将 CDI 与 POJO 一起使用。

现在有一个在 Wildfly 10.1.0.Final 中运行的 Jaxrs Resteasy Web 应用程序。

有一个返回 ServiceImpl 类的单例:

public class ServiceFactory {

private static Service service = new ServiceImpl();

public static Service getEnvsApi()
{
return service;
}
}

我想在 ServiceImpl 类中使用 CDI

public class ServiceImpl extends Service {

@Inject
private MyData myData;

@Override
public MyData getData()
{
return myData;
}
}

但是myData始终为空。

我必须手动启动 Weld 吗?

最佳答案

如果您的 Web 应用程序在 Wildfly 中运行,则无需“启动”Weld。只需在代码中使用 CDI API 并在 webapp/WEB-INF 中添加 beans.xml (看看 CDI 的 bean discovery 模式),CDI 就会被激活。

关于您的问题,问题是您通过新的运算符实例化服务,这破坏了 CDI! Ss在其他答案中说,您必须在ServiceImpl上使用@ApplicationScoped,并且不需要ServiceFactory

只需将 ServiceImpl 声明为 @ApplicationScoped

@ApplicationScoped
public class ServiceImpl implements Service {

@Inject
private MyData myData;

@Override
public MyData getData()
{
return myData;
}

}

然后你可以@Inject你的Service:

@Inject
private Service service

关于java - wildfly - 将 CDI 与 POJO 结合使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41986134/

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