2012-10-04 73 views
1

当创建一个Grails服务很多教程显示类似:grails create-service myproject.DoStuff但它似乎grails create-service myproject.doStuff作品一样好,他们都做了一个名为“DoStuffService”使用全部大写似乎做工精细的服务,但似乎有很多以小写字母显示的地方。我提交这个小写的例子(第一个代码片段,大约在页面中间的一半处):http://grails.org/doc/2.1.0/guide/services.htmlGrails服务应该首字母大写还是小写?

哪种方式是首选?为什么?如果您在使用Grails命令小写创建服务你需要用小写def doStuff还是应该def DoStuff工作无论哪种方式注入呢?

回答

4

两者都可以工作,但我认为从概念上来说,您将创建一个名为“”的“人员服务”,因此更常见。但是Java和Groovy中的约定是大写的类名,而Grails中的后缀是服务类的名称和“Service”,所以这导致类名称为PersonService

bean名字就是来自这一切虽然是各自独立。为Spring bean的名字的约定是为小写变量一样的第一个字母,所以Grails的自动登记PersonService为personService豆,所以你应该使用def personService

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