将 EJB 注入 Spring 引导环境
Injecting EJB into a Spring Boot environment
我目前正在开发一个 Spring Boot 项目,该项目由一个全栈 Web 应用程序组成,使用 Spring JPA 进行持久化,为业务级别提供服务,Spring REST 端点的 MVC。
到目前为止一切顺利,但我需要添加在纯 Java EE 中实现的功能。
我立即想到 "inserting" 几个普通的旧企业 Java Beans 以某种方式进入当前 Spring 引导应用程序。
到目前为止,我已经尝试了不同的可能性,但都没有奏效。
EJb 类似于
@Stateless(name = "TeacherService")
public class TeacherServiceImpl implements TeacherService {
....
}
我想像这样将它注入 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。
在有人指出这一点之前,我知道这是一项愚蠢的任务,我可以简单地将 class 声明为带有 @Service 或 @Component 之类的 Spring Bean,但分配状态为 "provide some functions using plain Java EE" 并且那些注释属于 Spring.
是否有解决此类任务的方法(或我未尝试过的方法)?
或者,Java EE 的哪个组件可以轻松地与 Spring Boot 兼容?
谢谢你的时间。
Spring 支持 JSR-330(@Inject 和 @Named)。
很遗憾,@Stateless 不受支持。
但是 Spring 可以解决您的问题的方法是在配置中将 TeacherServiceImpl 声明为一个 bean class。
@Configuration
public class MyConfig {
@Bean
public TeacherService teacherService() {
return new TeacherServiceImpl();
}
}
然后您将能够@Autowire/@Inject bean。
我目前正在开发一个 Spring Boot 项目,该项目由一个全栈 Web 应用程序组成,使用 Spring JPA 进行持久化,为业务级别提供服务,Spring REST 端点的 MVC。
到目前为止一切顺利,但我需要添加在纯 Java EE 中实现的功能。 我立即想到 "inserting" 几个普通的旧企业 Java Beans 以某种方式进入当前 Spring 引导应用程序。
到目前为止,我已经尝试了不同的可能性,但都没有奏效。 EJb 类似于
@Stateless(name = "TeacherService")
public class TeacherServiceImpl implements TeacherService {
....
}
我想像这样将它注入 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。 在有人指出这一点之前,我知道这是一项愚蠢的任务,我可以简单地将 class 声明为带有 @Service 或 @Component 之类的 Spring Bean,但分配状态为 "provide some functions using plain Java EE" 并且那些注释属于 Spring.
是否有解决此类任务的方法(或我未尝试过的方法)? 或者,Java EE 的哪个组件可以轻松地与 Spring Boot 兼容? 谢谢你的时间。
Spring 支持 JSR-330(@Inject 和 @Named)。
很遗憾,@Stateless 不受支持。
但是 Spring 可以解决您的问题的方法是在配置中将 TeacherServiceImpl 声明为一个 bean class。
@Configuration
public class MyConfig {
@Bean
public TeacherService teacherService() {
return new TeacherServiceImpl();
}
}
然后您将能够@Autowire/@Inject bean。