是否复制或扩展megaprotouser或metaprotouser以将liftweb与现有数据库集成

时间:2012-04-25 02:34:43

标签: scala lift

我正在制作一个概念验证,以展示电梯对MS MVC的好处,因此我正在研究liftweb与现有数据库的集成。

我想重用我能做的,但是需要修改用户对象,因为行为有变化,我需要添加和删除一些属性。

扩展Mega或meta proto用户或者只是复制该类并使用新名称对其进行修改会更有意义,并在我的项目中使用它吗?

如果我修改了它,我可以添加一些新特性来改变行为,但我需要更改用于登录的内容,因为电子邮件未被使用。

在java中,我可以使用一个方面(AOP)来做这个,我认为scala中可能有类似的方式,但我不确定。

我正在与MSSQL集成,所以我希望最好使用mapper而不是record来进行集成。

1 个答案:

答案 0 :(得分:4)

Scala在JVM上运行,因此AOP技术仍然有效。但大多数人发现,Scala的语言功能通常比AOP提供更简洁,更简单的方法来实现目标。

您可以通过简单地扩展MegaProtoUser / MetaMegaProtoUser并覆盖您希望更改的方法来完成您想要的任务。例如,您可以覆盖def findUserByUserName(username: String)以按用户名字段而不是电子邮件地址进行搜索。 proto类是为这种自定义而设计的。

如果您发现自己想要更改以至于想要复制/粘贴整个内容,那么我建议您只编写自己的用户类,或者使用更符合您需求的内容。原型课没有什么神奇之处;他们只是给你一个起点。另外,他们所做的事情在生产代码中也是不好的形式(即将HTML放在模型代码中)。

Tim PerretLift in Action中说得最好:

  

Proto系列特征是一个起点,而非终结解决方案。   在许多方面,它们与Rails的脚手架类似:它们会提升   短期内的生产力,但从长远来看,你会长大   它们会逐渐将它们从你的应用程序中分解出来   替换为您自己的代码或者使用某些插件中的代码替换   或图书馆。

谈到Tim和插件,他写了lift-shiro,它将Lift与Apache Shiro集成在一起。这也许值得一试。