1

私は、MS MVC に対するリフトの利点を示すための概念実証に取り組んでいるので、liftweb を既存の DB と統合することに取り組んでいます。

再利用できるものは再利用したいのですが、動作が変更され、いくつかの属性を追加および削除する必要があるため、ユーザー オブジェクトを変更する必要があります。

Mega または meta proto ユーザーを拡張するか、クラスをコピーして新しい名前で変更し、それをプロジェクトで使用する方が理にかなっていますか?

変更した場合、動作を変更するためにいくつかの新しい特性を追加できますが、電子メールが使用されていないため、ログインに使用されるものを変更する必要があります.

Java では、アスペクト (AOP) を使用してこれを行うことができます。scala にも同様の方法があると思いますが、確かではありません。

私は MSSQL と統合しているので、この統合にはレコードではなくマッパーを使用するのが最善だと思います。

4

1 に答える 1

4

Scala は JVM で実行されるため、AOP 手法は引き続き機能します。しかし、ほとんどの人が気付くのは、Scala の言語機能は通常、AOP よりもクリーンで簡単な方法で目標を達成できるということです。

MegaProtoUser/MetaMegaProtoUserを拡張して、変更したいメソッドをオーバーライドするだけで、おそらく目的を達成できます。たとえば、def findUserByUserName(username: String)メール アドレスの代わりにユーザー名フィールドで検索するようにオーバーライドできます。proto クラスは、この種のカスタマイズ用に設計されています。

全体をコピーして貼り付けたいほど変更したい場合は、その時点で、独自のユーザー クラスを作成するか、ニーズにより適したものを使用することをお勧めします。proto クラスには魔法のようなものは何もありません。彼らはあなたに出発点を与えるためにそこにいるだけです。さらに、製品コードでは不適切な形で行われることがあります (つまり、モデル コードに HTML を挿入する)。

ティム・ペレットは、 Lift in Actionでそれを最もよく言っています。

Proto シリーズの特性は出発点であり、最終的な解決策ではありません。多くの点で、それらは Rails の足場に似ています: 短期的には生産性を向上させますが、長期的には、独自のコードに置き換えるか、おそらくプラグインまたはライブラリからのコード。

Tim とプラグインといえば、彼はLift をApache Shiroと統合するlift-shiroを作成しました。それもチェックする価値があるかもしれません。

于 2012-04-25T13:45:20.417 に答える