有没有改变默认的Grails服务命名约定?

时间:2012-12-20 17:48:39

标签: grails

我想创建一个Grails服务而不使用类名称的* Service后缀约定(例如,将我的类调度程序命名为ScheduleService而不是ScheduleService)。是否有覆盖Grails默认行为并将grails-app/service目录中的任何对象视为Grails服务?

4 个答案:

答案 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()