我正在使用 Spring MVC 3.0 创建一个新的 Java webapp,并希望尽可能多地使用标准 Java EE 6 的东西。 (我在 Glassfish 3.1.1 上。)真正的驱动程序想要使用 MVC Web 框架而不是 JSF。
所以我正在寻找将 EJB 注入(inject)我的 Spring Controller 的最佳方法。我取得了一些成功,但我对它的外观不满意,我希望找到更好的方法。
通过 JNDI 找到 EJB,这很有效:
// 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
}
但我不满意在 Controller 的 @EJB 注释上需要“mappedName”。
有没有更好的方法来做到这一点?
不过,好消息是我可以在 EJB 和 Spring bean 中使用相同的 @Inject 注释,唯一的区别是哪个框架创建对象并执行注入(inject)。
最佳答案
如果你使用
mappedName="java:module/Service"
而不是
mappedName="java:global/springtest/Service"
您不必担心应用程序名称。 这使代码更具可移植性。我想这会解决你的一些问题
关于spring - 使用 Spring MVC 3.0 和 @EJB 注释而没有映射名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7844225/