Я делаю новое веб-приложение на Java с Спринт g MVC 3.0 и хочу использовать как можно больше стандартных вещей Java EE 6. (Я использую Glassfish 3.1.1.) Настоящий драйвер хочет использовать веб-фреймворк MVC, а не JSF.
Итак, я ищу лучший способ внедрить EJB в мои контроллеры Spring. У меня был некоторый успех, но я не доволен тем, как он выглядит, и я надеялся найти лучший способ.
Это сработало, обнаружив EJB через JNDI:
// EJB
@Stateless
public class Service {
@PersistenceContext(name="MAIN")
private EntityManager em;
public void doSomething() { .... }
}
// Spring
@Controller
public class HomeController {
@EJB(mappedName="java:global/springtest/Service")
private Service service;
// controller methods use service
}
Но я недоволен тем, что мне нужно «mappedName» в аннотации @EJB в контроллере.
Есть ли лучший способ сделать это?
Хорошая новость заключается в том, что я могу использовать одну и ту же аннотацию @Inject в EJB-компонентах и bean-компонентах Spring, и единственная разница заключается в том, какой фреймворк создает объект и выполняет инъекцию.