从Spring框架迁移到Play框架(Scala)

时间:2013-10-25 19:46:14

标签: java spring scala playframework-2.0

我一直在项目中使用Spring框架(3.x),使用以下功能:

  • security:Spring安全API
  • 持久性:Hibernate(自动生成/更新数据库方案)
  • 全文搜索:Hibernate Search(基于Apache Lucene)
  • IOC:Spring依赖注入

我想将以前的一些项目迁移到Play框架。 最近我开始学习Scala语言以及Play framework 2.x.我想使用与以前相同的功能。 对于数据库,我将使用Slick库。

您能告诉我使用什么来进行安全性和全文搜索吗?

2 个答案:

答案 0 :(得分:8)

迁移到新技术总是一条坎坷的道路,所以不要指望你尝试为你工作的第一件事 - 你可能需要自己实施一些东西。我稍后将通过一个具体的例子来解决这个问题。

首先, Scala 表示可扩展,而非可集成。也就是说,如果您选择在Scala中编写任何代码,请记住,用于Java自动化的框架通常不适用于Scala端。 ORM是一个非常好的例子,因为Scala方法并不总是精确的Java方法,因此元数据最终会出现在不正确的位置,并且最终会导致数据损坏。所以一般的指针是,如果你使用Scala,除非帮助者与语言语义完全隔离,否则你真的无法查看Java生态系统中的助手。


安全

假设您充分利用了Spring Security,那么您使用的是role-based access control。如果你使用Java,你实际上应该能够使用Spring Security,这肯定可以帮助你进行迁移并节省编写更多代码的时间。您真正需要的只是Play应用中的Spring容器,谢天谢地,其他人已经解决了这个问题:Integrating Play framework 2.0 and Spring framework

在Scala方面,RBAC似乎是关于RBAC和ACL之间语义的文明斗争,没有明显的赢家。这是有问题的,因为看起来没有人真正在工作,这意味着你可能不得不自己动手。

持久性

使用Java,您应该能够使用Hibernate /任何JPA解决方案,因为它不依赖于Web容器。 Play也附带了EBeans,但据我所知,它不能用于最奇特的用例。可能你永远不会打那些,所以它值得尝试,因为它已经存在。

在Scala方面,正如您所想,Slick应该没问题。

全文搜索

搜索是一件非常复杂的事情,所以我实际上设置了独立的Solr / ElasticSearch并集成到其API中,而不是将其嵌入到应用程序本身,无论使用何种语言或框架。

IOC

最新游戏只是支持Guice,Scala本身试图强制执行蛋糕模式。使用之前链接的容器集成应该可以实现Spring。

我希望其他人真的有很好的见解来评论这个,因为Play的构建方式,特别是在Java方面,似乎是非常敌对的。

答案 1 :(得分:2)

您实际上可以尝试使用http://www.playframework.com/documentation/2.0.1/ScalaSecurity来获取安全性和zentask样本。

进一步用于文本搜索 - 您可以在scala中使用反应式驱动程序。