クラス名に *Service 接尾辞規則を使用せずに Grails サービスを作成したいと考えています (たとえば、ScheduleService の代わりに自分のクラスに Scheduler という名前を付けます)。とにかくGrailsのデフォルトの動作をオーバーライドして、grails-app/service
ディレクトリ内のオブジェクトをGrailsサービスとして扱いますか?
4 に答える
私はそうは思いませんが、Bean に別の名前を使用したいという理由がある場合は、scheduleService のエイリアスを登録してみてください。このページのコメントによると、これを resources.groovy に追加できるはずです。
springConfig.addAlias('scheduler','scheduleService')
ただし、自分で試したことはなく、ドキュメントには何も見つかりませんでした。
それが可能だとは思わないでください。これは、grails フレームワークで暗示された「規則」の一部だからです。
Grails サービスは、信じられないかもしれませんが、プラグインを使用して Bean として登録されるため、独自のプラグインを作成することでこれを実現できるはずです。
grails-plugin-services sourceを見てください。監視対象のサービスが次の行に組み込まれていることがわかります。
def watchedResources = ["file:./grails-app/services/**/*Service.groovy",
"file:./plugins/*/grails-app/services/**/*Service.groovy"]
さて、それが可能であるという事実にもかかわらず、少し作業が必要になるかもしれませんし、それは悪い考えかもしれません. 本当にわかりません。watchedResources
基本的にサービス プラグインをコピーし、変更して独自のプラグインにラップした場合、Grails がびっくりするかどうかはわかりません。
grails のドキュメントをざっと見ただけですが、Artefacts に関するセクションも役立つはずです。
サービスを参照する簡単な方法を探しているだけの場合は、次のようにします。
def painfullyLongNameService
def getNoPain() {return painfullyLongNameService}
noPain.yourServiceFunction()