Grails服务的第一个字母是大写还是小写?

时间:2012-10-04 04:40:31

标签: grails service naming-conventions

在创建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以任何方式工作?

1 个答案:

答案 0 :(得分:4)

两者都有效,但我认为将名字小写更常见,因为从概念上讲,您正在使用grails create-service person创建“人员服务”。但是Java和Groovy中的约定是大写的类名,而Grails中的约定是带有“Service”的后缀服务类名,因此这会导致类名为PersonService

bean名称与所有这些都是分开的。 Spring bean名称的约定是将第一个字母小写为变量,因此Grails会自动将PersonService注册为personService bean,因此您应该使用def personService

def personService的工作原理是Groovy编译器将这样的非范围字段转换为私有字段和公共getter和setter方法。如果getter或setter方法已经存在,它将不会取代你的。 Grails将其bean配置为按名称使用自动装配,因此Spring会看到setPersonService方法并调用它将其值设置为personService bean。