Grails创建服务的确是做什么的?

时间:2011-06-10 04:09:04

标签: grails service

我正在开发Grails应用程序(使用Grails 1.3.7)。在服务层,我没有使用命令'create-service'来创建我的服务,而是手动完成。

结果,我的服务没有在控制器和其他服务中自动初始化,也没有处理事务。

但是我不知道通过手动命令创建服务的区别在哪里?因为我没有看到任何配置文件弄清楚这个? (我的意思是在传统的Spring中,我们总是有一些配置文件指定应用程序中的所有bean,但在Grails中却没有)。

我想修复此问题并提交SVN服务器我的修复,但我不想删除旧服务并提交由Grails命令创建的新服务。那么请你帮助我:
1.通过手册解释创建服务与命令的区别是什么? 2.如何将手工创建的服务更改为命令创建的服务而不更换旧服务? 非常感谢你!

3 个答案:

答案 0 :(得分:3)

只要将您的类放在grails-app/services目录中,它就应该像任何其他服务一样(并作为一个Spring bean)。

如果您将其放在src/javasrc/groovy中,则不会将其视为服务(并且不会被Grails加载为服务工件)。它仍然可以是一个spring bean,但您必须手动将其添加到resources.groovy文件中。

答案 1 :(得分:3)

  

解释通过手动命令创建服务的区别是什么?

假设您将服务放在grails-app/services中并使用后缀Service遵循命名约定唯一的区别是您获得了一个看起来像

的漂亮模板
class SomeService {
    boolean transactional = true

    def someMethod() {
    }
}

并自动创建名为SomeServiceTests的单元测试。这就对了。如果您不包含BTW交易,则默认为true

  

如何将手动创建的服务更改为命令创建的服务而不替换旧服务?

假设您遵循惯例,则无所事事。如果您确实遵循惯例并且仍然遇到问题,请使用更多详细信息更新您的问题,例如您尝试使用服务的方式以及服务示例。

答案 2 :(得分:0)

另请注意,Grails自动装配bean必须准确无误,因此如果您拥有MyService并且想要在控制器中使用它,请确保您具有“def myService”或“MyService myService”。如果你更喜欢你的成员变量的不同名称,你也可以直接使用Spring Autowired注释,虽然我只尝试自动装配grails类型(例如grails服务)自动连接到我在resources.xml中声明的bean

如果您将服务或任何其他bean放在resources.xml或resources.groovy文件中,它们也将是自动装配的介绍控制器,其他服务等。

最好将Grails视为“快速Spring”,因此自动装配,事务等都由Spring配置等支持。