gpt4 book ai didi

java - 无需 Weld 即可初始化 Java CDI?

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

如果我理解正确的话,Java CDI 应该独立于 Weld。但我看到的所有示例都使用 Weld 来初始化容器。

我尝试在不使用 Weld 的情况下使用 CDI,因为虽然我想使用 DI,但内存非常有限。

这是我的 LoggerFactory 的示例-

@ApplicationScoped
public class LoggerFactory {

@Produces
@Singleton
public Logger getLogger() {
return LogManager.getLogger("com.myapp");
}

}

我试图在 Main 中获取它 -

Logger logger = CDI.current().select(Logger.class).get();

当我这样做时,我得到无法找到 CDIProvider

是否可以在没有额外库的情况下使用 CDI?在这种情况下如何获取我的记录器?

最佳答案

CDI 是 Java EE 规范。它指定了事情应该如何完成,但它本身不提供功能。

Weld 是 CDI 规范的引用实现。 CDI 的替代实现是 Apache OpenWebBeans。这些实现中的任何一个都能够为您提供 CDI 的功能。

Weld 提供了一个扩展,可以在 Java SE 中启动 CDI bean 管理器: https://docs.jboss.org/weld/reference/latest/en-US/html/environments.html#weld-se

但要小心,因为根据我的经验,Weld SE 会消耗大量内存,并且需要一些时间来扫描(更大的)SE 应用程序的类路径。

关于java - 无需 Weld 即可初始化 Java CDI?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56651290/

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