5

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

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

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

你能告诉我什么用于安全和全文搜索吗?

4

2 回答 2

8

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

首先,Scala意味着可扩展的,而不是可集成的。也就是说,如果您选择在 Scala 中编写任何代码,请记住,用于在 Java 中实现自动化的框架大多不适用于 Scala。ORM 就是一个很好的例子,因为 Scala 方法并不总是完全是 Java 方法,因此元数据最终会出现在不正确的位置,并且最终会出现损坏的数据。所以一般的指针是,如果你使用 Scala,你真的不能在 Java 生态系统中寻找助手,除非助手完全与语言语义隔离。


安全

假设您充分利用了 Spring Security,您正在使用基于角色的访问控制。如果您使用 Java,您实际上应该能够使用 Spring Security,这绝对可以帮助您进行迁移并节省编写更多代码的时间。您真正需要的是 Play 应用程序中的 Spring 容器,幸运的是其他人已经解决了这个问题:集成 Play 框架 2.0 和 Spring 框架

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

持久性

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

在 Scala 方面,正如您已经想到的那样,Slick 应该没问题。

全文搜索

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

国际奥委会

最新的 Play 几乎支持 Guice,Scala 本身试图强制执行蛋糕模式。Spring 应该可以通过之前链接的容器集成来实现。

我希望其他人实际上对此有很好的见解,因为 Play 的构建方式,尤其是在 Java 方面,似乎对 IOC 非常不利。

于 2013-10-26T10:30:36.080 回答
2

您实际上可以尝试http://www.playframework.com/documentation/2.0.1/ScalaSecurity以获得安全性和 zentask 以获得示例。

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

于 2013-10-26T10:12:06.110 回答