1

Grails サービスを作成するとき、多くのチュートリアルは次のようなものを示します:grails create-service myproject.DoStuffしかし、それはgrails create-service myproject.doStuff同じように機能するように見え、どちらも "DoStuffService" と呼ばれるサービスを作成します。小文字の最初の文字でそれを。この小文字の例を提出します (最初のコードスニップとdef authorServiceページのほぼ半分): http://grails.org/doc/2.1.0/guide/services.html

どの方法が好ましいですか?なんで?grails コマンドで小文字を使用してサービスを作成する場合、小文字を挿入する必要がありますか、def doStuffそれともdef DoStuffどちらの方法でも機能する必要がありますか?

4

1 に答える 1

4

どちらも機能しますが、概念的には。を使用して「個人サービス」を作成しているため、名を小文字にする方が一般的だと思いますgrails create-service person。ただし、JavaとGroovyの規則では大文字のクラス名を使用し、Grailsではサービスクラス名の末尾に「Service」を付けるため、クラス名は。になりPersonServiceます。

ただし、Beanの名前はこれとは別のものです。Spring Bean名の規則では、変数のように最初の文字を小文字にするため、GrailsはPersonServiceをpersonServiceBeanとして自動登録するため、を使用する必要がありますdef personService

動作する理由def personServiceは、Groovyコンパイラが、このようなスコープのないフィールドをプライベートフィールドとパブリックゲッターおよびセッターメソッドに変換するためです。getterまたはsetterメソッドがすでに存在する場合、それはあなたのメソッドを置き換えません。Grailsは名前で自動配線を使用するようにBeanを構成するため、SpringはsetPersonServiceメソッドを確認し、それを呼び出してその値をpersonServiceBeanに設定します。

于 2012-10-04T04:52:21.280 に答える