1

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

4

1 回答 1

4

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

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

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

于 2012-10-04T04:52:21.280 回答