gpt4 book ai didi

spring - 将EJB注入(inject)Spring Boot环境

转载 作者:行者123 更新时间:2023-12-02 01:23:14 25 4
gpt4 key购买 nike

我目前正在开发一个 Spring Boot 项目,该项目由一个全栈 Web 应用程序组成,使用 Spring JPA 进行持久化,使用 Spring JPA 进行业务级别的服务,并使用 Spring MVC 进行 REST 端点。

到目前为止一切顺利,但我需要添加在纯 Java EE 中实现的功能。我立即想到以某种方式“插入”一些普通的旧式 Enterprise Java Bean 到当前的 Spring Boot 应用程序中。

到目前为止,我已经尝试了不同的可能性,但没有任何效果。EJb 类似于

    @Stateless(name = "TeacherService")
public class TeacherServiceImpl implements TeacherService {
....
}

我想将它注入(inject)到 Spring RestController 中,如下所示:

    @RestController
public class ExampleController {

@EJB / @Inject / @Autowire
private TeacherService teacherService;

@GetMapping(value = "user")
public String getSomeData() {
return teacherService.someMethod();
}
}

我尝试了几种组合,但到目前为止没有任何效果。我找到了一些信息,但看起来将 EJB 与 Spring 合并的唯一方法是使用完整的 Spring 框架而不是 Spring Boot。在有人指出这一点之前,我知道这是一项愚蠢的任务,我可以简单地使用 @Service 或 @Component 之类的东西将类声明为 Spring Bean,但分配声明“使用普通 Java EE 提供一些功能”和这些注释属于Spring。

对于此类任务有任何解决方法(或我没有尝试过的方法)吗?或者,Java EE 的哪些组件可以轻松地与 Spring Boot 兼容?感谢您抽出时间。

最佳答案

Spring 支持 JSR-330(@Inject 和 @Named)。

不幸的是,不支持@Stateless。

但是 Spring 可以解决您的问题的方法就是将 TeacherServiceImpl 声明为 Configuration 类中的 bean。

@Configuration
public class MyConfig {
@Bean
public TeacherService teacherService() {
return new TeacherServiceImpl();
}
}

然后您将能够@Autowire/@Inject bean。

关于spring - 将EJB注入(inject)Spring Boot环境,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50607046/

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