我想创建一个Grails服务而不使用类名称的* Service后缀约定(例如,将我的类调度程序命名为ScheduleService而不是ScheduleService)。是否有覆盖Grails默认行为并将grails-app/service
目录中的任何对象视为Grails服务?
答案 0 :(得分:3)
我不这么认为,但如果原因是你想为bean使用不同的名字,你可以尝试为scheduleService注册一个别名。 根据评论on this page,您应该可以将其添加到resources.groovy:
springConfig.addAlias('scheduler','scheduleService')
虽然没有尝试过,但在文档中没有找到任何内容。
答案 1 :(得分:2)
当然你可以,只需在resources.groovy
中进行FatalErrorException in MyController.php line 12:
Class 'App\Http\Controllers\View' not found
然后你可以在其他地方做任何事情
scheduler(YourCustomSchedulerClassname){ b->
// config
}
答案 2 :(得分:1)
不要认为这是可能的。因为它是grails框架中隐含的“约定”的一部分。
答案 3 :(得分:1)
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()