Java 在使用Play framework时,如何创建具有请求范围的依赖项注入对象?

Java 在使用Play framework时,如何创建具有请求范围的依赖项注入对象?,java,jpa,playframework,dependency-injection,guice,Java,Jpa,Playframework,Dependency Injection,Guice,例如,假设您希望向一个播放控制器注入两个数据映射器(或存储库或任何您想要调用数据库访问类的对象),并且这两个数据映射器中的每一个都应该注入一个JPA EntityManager。 然后,如果两个数据映射器的工作应该在同一事务中完成,则希望它们都注入同一个EntityManager实例 也许有一些Guice自定义范围(play框架的请求范围)可以使用? 特别是关于JPA的解决方案,我已经看到了一些带有助手方法“play.db.JPA.JPA.em()”和注释“play.db.JPA.Transa

例如,假设您希望向一个播放控制器注入两个数据映射器(或存储库或任何您想要调用数据库访问类的对象),并且这两个数据映射器中的每一个都应该注入一个JPA EntityManager。 然后,如果两个数据映射器的工作应该在同一事务中完成,则希望它们都注入同一个EntityManager实例

也许有一些Guice自定义范围(play框架的请求范围)可以使用?


特别是关于JPA的解决方案,我已经看到了一些带有助手方法“play.db.JPA.JPA.em()”和注释“play.db.JPA.Transactional”的代码但我现在正在寻找一个更通用的答案,即当您希望在请求中重用同一实例时,如何注入对象。

您使用的是哪个版本的Play?Play for Java 2.4.6版。据我所知,Play没有内置请求范围(如Spring或其他类似框架)。但大多数情况下你并不需要它。默认情况下,在游戏中每个线程都有一个EntityManager。至少在文档中有这样的建议()。因此,如果你不做任何与多踏板你应该在安全的一面。