spring - 使用 Spring MVC 3.0 和 @EJB 注释而没有映射名称?

标签 spring model-view-controller ejb

我正在使用 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/

相关文章:

java - Spring MappingJacksonJsonView,如何告诉使用它而不是 JSP View ?

mysql - 从表中获取 id

ruby-on-rails - Rails 3.1 一种模型的不同 View

angular - 类型 'forRoot' .ts(2339) 上不存在属性 'typeof NgbModule'

WildFly 上的 javax.naming.NameNotFoundException EJB HelloWorld

java - JSF + JPA 没有 EJB 或 Spring?

java - EJB:为什么在 JNDI 查找中会出现此错误?

spring - 在 Spring Boot 中加载 chromedriver

java - Spring 重试异常 block 的问题

php - 将 post 值从 View 传递到 Controller 再到模型,然后返回到代码点火器中的 Controller