Spring 生态系统中是否有任何类实现 SeContainerInitializer 或 SeContainer?

问题描述 投票:0回答:1

我正在尝试将 Jakarta jnosql Artemis 与 Spring Boot 应用程序一起使用。 Artemis 需要提供 CDI(上下文和依赖注入)实现。总的来说,Spring Framework 做到了这一点,但是它实现了自己的类似接口 org.springframework.web.SpringServletContainerInitializer,但 Artemis 似乎需要 SeContainerInitializer 的精确实现。

Spring 生态系统中是否有任何类实现 SeContainerInitializer 或 SeContainer?

是否可以将 Jakarta jnosql Artemis 与 Spring Boot 应用程序一起使用?

如果是 - 怎么办?一个简单的 Spring Boot 使用 Jakarta jnosql Artemis 图插入和查询的例子就太好了。

如果没有 - 为什么?特别是,它是暂时的(Spring将来会实现它)还是永久的状态?

我明确不想使用 Spring Data。

我知道,他们确实提供了与 Jakarta jnosql Artemis 类似的解决方案。

两年前,有人提出了类似的问题[https://stackoverflow.com/questions/68592784/using-jnosql-cdi-library-with-spring-boot-bean-not-found],其中一条评论声称Spring 没有实现该接口。我想知道这种情况是否已经改变或即将改变。答案还建议使用 Spring Data,但我不想使用它。

我尝试设置 Spring Boot 应用程序并使用 @Inject 注释来注入 GraphTemplate(来自 Artemis)等类。 Spring抛出一个异常,它无法找到任何要注入该类的bean。

我还在 Github 上找到了一个应用程序,其中包含带有 Weld 的 Jakarta jnosql Artemis(CDI 实现)的工作示例。然后我尝试用 Spring Boot 替换 Weld,但是我找不到 SeContainer 接口的实现。

spring cdi jnosql
1个回答
0
投票

Spring 生态系统中的任何类是否实现 SeContainerInitializer 或 SeContainer?

不,他们不会/不能。 Spring 不是 CDI 实现。 Spring似乎偶尔借用了一些CDI接口/注释,但这并不意味着它实现了CDI规范,甚至希望通过CDI TCK。虽然 CDI 和 Spring 具有相似/相关的目的,但 Spring 是它自己的东西。

CDI 中存在的一些概念在 Spring 中不存在,反之亦然,无论好坏。

这有一些历史。运行时依赖注入的想法很久以前(2000 年代末)就在 J2EE 中体现出来了。这要求应用程序服务器供应商(如 IBM)在其容器(如 WebSphere)中实现规范。

Spring 设计者对 J2EE 功能开发的速度感到沮丧,并创建了一个替代的、不同的框架,称为 Spring Framework,这是一个全栈企业框架。尽管 Spring 的某些部分可以与 J2EE 服务器交互,但与 J2EE 规范的兼容性绝不是一个问题。

快进,这一遗产继续存在:Spring 是它自己的框架,没有实现 JavaEE/JakartaEE 规范;但 Spring 可以调用其中的一部分或借用一些注释。但在大多数情况下,您无法将为 CDI 设计的组件引入到 Spring 中,反之亦然。这只是两个不同的世界。

© www.soinside.com 2019 - 2024. All rights reserved.