14

これらの 3 つのフォルダーと、それらのフォルダーに何を入れるべきかの違いを突き止めようとしています。

現時点では、クラス、インターフェイス、およびドメイン クラスの構造に (拡張または実装することによって) 直接関連するその他すべてをsrcフォルダーに投入しています。Grails コントローラーがデフォルトで行うこと以外に追加のトランザクション ロジックを含むものはすべて、フォルダーに入れていgrails-app/servicesます。最後に、「ヘルパー」メソッドを含むクラス (つまり、さまざまなものの比較、特別な文字列操作など) をフォルダーに入れていgrails-app/utilsます。

これらのフォルダを何に使用すべきかについてのマークを見逃していた場合は、正しいパスを教えてください。

4

2 に答える 2

12

それはかなり近いです。grails-app/utils は Codec クラス用です。名前が変で、文書化されていません。ヘルパー クラスを src/groovy に戻します。

サービスを使用してトランザクション作業を行うことは素晴らしいことですが、サービスをトランザクション以外の方法にも使用できます。static transactional = falseトランザクションを必要としないユーティリティ メソッドを持つサービス クラスに追加します。コントローラーにはトランザクション性がないため、すべての永続性をトランザクション サービスに移行する必要があります。

src/groovy ヘルパー クラスの静的ユーティリティ メソッドとサービスの非トランザクション メソッドはほぼ同等です。クラスが Spring Bean に依存している場合は、それをサービスにして、依存性注入を介してそれらを参照します。それ以外の場合は、ヘルパー クラスにします。

于 2012-07-09T03:25:57.693 に答える
2

非ドメイン クラスに依存するドメイン クラスにメソッドを追加していることに気付いた場合は、代わりにこのメソッドがサービスにある理由を自問してください。これにより、ほぼすべてのドメイン クラスに対応するサービスが提供されます。

これにより、ドメイン クラスをプラグインに簡単に配置できるようになり、同じドメイン モデルを使用して複数のアプリを構築することで機能を拡張できるようになり、保守不可能な大きな泥のボールを作成する必要がなくなります。また、Uncle Bob Martin が Lost Years of Architecture http://www.youtube.com/watch?v=WpkDN78P884で説明したアプリケーション モデルとも一致しています。

建築について考えているなら、ボブおじさんとマーティン・ファウラーの作品を読むのは良い考えです。

于 2012-07-09T06:19:31.277 に答える