gpt4 book ai didi

java - 是否可以将依赖项 CDI 与 Wildfly 一起使用?

转载 作者:行者123 更新时间:2023-12-02 11:55:18 25 4
gpt4 key购买 nike

我习惯了 Spring 框架依赖注入(inject)之类的东西,所以我对 JBoss 真的很陌生。我可能想做一些不可能的事情。

在我们公司,我们从一个具有所有依赖注入(inject)的原型(prototype)开始。我们有一个类是这样声明的:

@ApplicationScoped
public class MessageHandlerImpl implements MessageHandler {
...
}

我将它注入(inject)到另一个类中,如下所示:

@ApplicationScoped
public class MessageReceiverImpl implements MessageReceiver {

@Inject
MessageHandler messageHandler;
...

}

原型(prototype)已被接受,现在我们正在组织这个项目,隔离核心项目上的一些公共(public)代码。

在我们将其分离之前,这些注入(inject)工作正常。关于此问题的更多详细信息已在以下问题上询问:Ambiguous dependency with only one @ApplicationScoped class

我退后一步,考虑也许我正在做的事情对于 Wildfly-swarm 来说是不可能的,或者我正在尝试的整个概念是错误的。

我想做的是在我的核心项目上完成所有 CDI,并且仅在我的依赖项目上将其与 @Inject 注释一起使用。所以在我的依赖项目中我会有类似的东西:

@ApplicationScoped
public class WSClient {

@Inject
MessageReceiver messageReceiver;

...

}

嗯,这不起作用,因为我得到了一个不明确的依赖关系,正如您在我链接的问题上看到的那样。我想知道我是否应该做的是使用生产者或类似的东西。谁能启发我一个有效的方法,或者也许是替代方案?

最佳答案

当您想要以某种可能不同的方式实例化一个类型,然后将其交给 CDI 说“嘿,如果有人注入(inject)这种类型,给他这个实例”(当然是非常简化的版本)时,就会使用生产者)。根据您的描述,您应该足以完成简单的注入(inject)和 bean 创建,我认为不需要生产者。

从你的两个问题中,我可以看出注入(inject)实际上是有效的,但存在一些含糊之处。我的意思是一个注入(inject)点有多个可能的候选点。仅在您的情况下,它们是相同的,这意味着该类必须以某种方式在某个地方加载了两次 - 继续朝这个方向挖掘。

从架构的角度来看,使用 CDI 完全可以(我想说很常见)将核心提取为 CDI 库,然后由项目的其他部分使用。只要确保您的所有文件都被视为“bean 文件”即可。实现这一目标的最简单方法是确保在其中包含 beans.xml

关于java - 是否可以将依赖项 CDI 与 Wildfly 一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47651029/

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