grails服务层次结构

时间:2011-10-29 01:31:50

标签: grails service

假设我有10个grails服务。这些服务中的每一个都将调用REST服务。因此,我想封装REST代码,以便10个服务可以轻松地重用它。

在考虑选项时,我可以:

1)使用REST相关代码创建另一个服务或bean,并将其注入10个服务中的每一个 2)创建一个包含REST代码的超类服务,并让所有10个grails服务扩展此类。

我正在尝试使用选项2,但遇到了依赖注入超类的问题。

示例:

class SuperService {
   def aString 
}

class ExampleService extends SuperService {
}

resources.groovy:

beans = {
    superService(SuperService) {
        aString = "something"
    }
    exampleService(ExampleService) {
    }
}

当我在运行集成测试时在调试器中运行它时,我看到aString的值为null。显然,这对我来说会有问题。

正如您所料,使用以下resources.groovy运行相同的代码:

beans = {
    superService(SuperService) {
    }
    exampleService(ExampleService) {
        aString = "something"
    }
}

和aString =“某事”。

所以,我更喜欢选项2,因为它将减少配置布线,但我认为这不是可行的方法。换句话说,如果我必须在每个子类中设置aString,那就没有价值。

思想?

我错过了什么吗?

我也对其他选项持开放态度。

提前致谢, 托德

1 个答案:

答案 0 :(得分:0)

对于DRY而言,您对选项#2有正确的想法 - 但它实际上只是一行。如果与superService对象唯一的共同点是服务,而没有其他方法,那么你真的不能保存自己的任何工作。如果有的话,只是为依赖注入声明一个超类会使事情更隐蔽,并且可能更难维护。

这听起来像你提议将REST方法放在superService中,所以不确定为什么你关注依赖注入superService - 你希望你的方法执行REST交互,子类就可以了打电话。或者您是否尝试了选项1和2的组合?