我正在分析使用带有 Play 2.1 的 Spring 框架来支持 DI。除了 DI,我还可以在 Play 2.1 中使用 Spring 的 AOP 拦截器、事务、DAO 和 REST 支持吗?我不确定这是否是正确的方法。如果不是,那么使用 Play 处理这些事情的最佳方法是什么?Play 在这些领域是否有任何内置支持,或者我是否需要使用单独的库,如 AspectJ、Guice、Jersey 等?
2 回答
是的,您可以将 Spring 与 Play Framework 集成。几周前我在一个项目中做到了。如 Pere Villega 链接的教程所示,这可以通过扩展轻松实现GlobalSettings
。这种方式也适用于其他 DI 解决方案,如 Guice(如图所示)。据我所知,目前 Play 2.x 中没有针对 DI 的原生解决方案。
当然,您也可以使用 Spring 提供的其他功能,例如它们的 DAO 支持或事务管理(但这可能需要进一步配置)。我们甚至使用了 Spring Data 的 MongoDB 支持。
只是一些个人说明:我真的很喜欢用于构建典型 Java MVC webapps 的 Play 框架,但我发现它仅用于构建 API 非常有气质。因此,如果您还使用 Play 编写 Web 客户端,那么提供的路由和模板非常棒,可以让您抢占先机。然而,对于纯 REST 服务,我最终使用了 JAX-RS(在 Jersey 上)、一些基本的 Spring 组件和 Jetty。然后,我们使用 Backbone、Node 和 Airbnb 的 Rendr 完全用 JavaScript 编写了 Web 客户端。
Play 有自己的方式来管理 REST、事务(取决于使用的 JPA 库)和拦截器。
您可以将它与 Spring 集成,请参阅github 中的这个演示,但我会首先考虑您是否真的需要它。