В настоящее время я работаю над проектом Spring Boot, состоящим из полнофункционального веб-приложения, использующего Spring JPA для сохранения, сервисов для уровня деловой активности и Spring MVC для конечных точек REST.
Пока все хорошо, но мне потребовалось добавить функции, реализованные на чистом Java EE. Я сразу же подумал о том, чтобы каким-то образом «вставить» пару простых старых Enterprise Java Beans в текущее приложение Spring Boot.
До сих пор я пробовал разные варианты, но ничего не работало. 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 Framework вместо Spring Boot. Прежде чем кто-либо укажет на это, я знаю, что это глупая задача, и я мог бы просто объявить класс как Spring Bean с чем-то вроде @Service или @Component, но в назначении указано «предоставить некоторые функции с использованием простого Java EE» и эти аннотации принадлежат весне.
Есть ли обходной путь (или что-то еще, что я не пробовал) для такого рода задач? В качестве альтернативы, какой компонент Java EE может быть легко совместим со Spring Boot? Спасибо за ваше время.
Попробуйте посмотреть по этой ссылке: spring.io/blog/2014/11/23/….
Spring поддерживает JSR-330 (@Inject и @Named).
К сожалению, @Stateless не поддерживается.
Но способ, которым Spring может решить вашу проблему, - это просто объявить TeacherServiceImpl как bean-компонент в классе Configuration.
@Configuration
public class MyConfig {
@Bean
public TeacherService teacherService() {
return new TeacherServiceImpl();
}
}
После этого вы сможете @ Autowire / @ Inject bean.
взгляните на эту статью baeldung.com/spring-ejb