使用 Spring bootstrap play 2.4 Java 应用程序的方法是什么?
What's the way to bootstrap a play 2.4 Java app with Spring?
https:// www.playframework.com/documentation/2.4.x/JavaDependencyInjection 的文档提到 DI 现在已集成到框架中:
Out of the box, Play provides dependency injection support based on
JSR 330. The default JSR 330 implementation that comes with Play is
Guice, but other JSR 330 implementations can be plugged in.
我找不到任何使用 Spring.
的 HOWTO 或工作示例
https:// www.playframework.com/documentation/2.4.x/Tutorials 上的当前文档链接到 https:// typesafe.[= 上的示例 "Play with Spring Data JPA" 35=] 但是评论已经提到它已经过时了。此外,在 GitHub 页面 https:// github.com/typesafehub/play-spring-data-jpa 上有未解决的问题,提到它在 Play 2.4.0.
中不起作用
该代码已有 2 年历史,仍在使用 Global.java class 至 bootstrap Spring。我对此表示满意,但是由于方法 getControllerInstance().
,代码在 Play 2.4 中不再编译
这个项目 https:// github.com/jroper/play-spring 看起来很有前途,但它是在 Scala 中,并且列出了许多 TODO,SpringApplicationLoader class 在https:// github.com/jroper/play-spring/blob/master/core/src/main/scala/play/api/inject/spring/SpringApplicationLoader.scala 看起来当我只想启动一个简单的 Spring 上下文时太复杂了。
现在看来我必须降级 Play 才能使用旧的 Global.java hack(并找出所有需要的更改...)
(有些编辑请把链接放回去,它们是合法的,它不会让我...)
很多人在使用 Play 2.4 时遇到这个问题,导致其中一些人坚持使用 2.3。
您从 Play 功能中引用的文本的问题在于,它暗示您可以使用 Play 2.4 插入任何 JSR 330 容器,但不幸的是,这非常困难,并且迄今为止,仍然没有完全可行的解决方案。这基本上违背了 Plays 自己的理念,即:
In Play 2, we wanted to make it really easy to use any data store
driver, ORM, or any other database access library without any special
integration with the web framework.
(Which is not the case when you want to use Spring ORM with Play 2.4.)
https://groups.google.com/forum/#!topic/play-framework/hFOtzSNSDsQ 还通过指向多个解决方案尝试的链接讨论了这个问题,其中最好的解决方案并不完全有效,但它可能适合您的需要:
https://github.com/zarinfam/play24-guice-spring
另一种解决方案是为 Springs ApplicationContext 创建一个单例并在您的 Play 客户端 类 中使用该单例。然后(不幸的是)你在那些 类 中没有依赖注入,但至少你可以以干净的依赖注入方式使用你的非播放 类。
更新:
我刚刚在 GitHub 创建了这个工作 Play-Java-Spring 模板:https://github.com/jtdev/play-java-spring
https:// www.playframework.com/documentation/2.4.x/JavaDependencyInjection 的文档提到 DI 现在已集成到框架中:
Out of the box, Play provides dependency injection support based on JSR 330. The default JSR 330 implementation that comes with Play is Guice, but other JSR 330 implementations can be plugged in.
我找不到任何使用 Spring.
的 HOWTO 或工作示例https:// www.playframework.com/documentation/2.4.x/Tutorials 上的当前文档链接到 https:// typesafe.[= 上的示例 "Play with Spring Data JPA" 35=] 但是评论已经提到它已经过时了。此外,在 GitHub 页面 https:// github.com/typesafehub/play-spring-data-jpa 上有未解决的问题,提到它在 Play 2.4.0.
中不起作用该代码已有 2 年历史,仍在使用 Global.java class 至 bootstrap Spring。我对此表示满意,但是由于方法 getControllerInstance().
,代码在 Play 2.4 中不再编译这个项目 https:// github.com/jroper/play-spring 看起来很有前途,但它是在 Scala 中,并且列出了许多 TODO,SpringApplicationLoader class 在https:// github.com/jroper/play-spring/blob/master/core/src/main/scala/play/api/inject/spring/SpringApplicationLoader.scala 看起来当我只想启动一个简单的 Spring 上下文时太复杂了。
现在看来我必须降级 Play 才能使用旧的 Global.java hack(并找出所有需要的更改...)
(有些编辑请把链接放回去,它们是合法的,它不会让我...)
很多人在使用 Play 2.4 时遇到这个问题,导致其中一些人坚持使用 2.3。
您从 Play 功能中引用的文本的问题在于,它暗示您可以使用 Play 2.4 插入任何 JSR 330 容器,但不幸的是,这非常困难,并且迄今为止,仍然没有完全可行的解决方案。这基本上违背了 Plays 自己的理念,即:
In Play 2, we wanted to make it really easy to use any data store driver, ORM, or any other database access library without any special integration with the web framework. (Which is not the case when you want to use Spring ORM with Play 2.4.)
https://groups.google.com/forum/#!topic/play-framework/hFOtzSNSDsQ 还通过指向多个解决方案尝试的链接讨论了这个问题,其中最好的解决方案并不完全有效,但它可能适合您的需要: https://github.com/zarinfam/play24-guice-spring
另一种解决方案是为 Springs ApplicationContext 创建一个单例并在您的 Play 客户端 类 中使用该单例。然后(不幸的是)你在那些 类 中没有依赖注入,但至少你可以以干净的依赖注入方式使用你的非播放 类。
更新: 我刚刚在 GitHub 创建了这个工作 Play-Java-Spring 模板:https://github.com/jtdev/play-java-spring