在grails应用程序中注入从未用于控制器的服务的成本是多少?

时间:2014-01-20 08:11:37

标签: grails

当我们执行def someService时会发生什么?服务代码是否链接到控制器代码?

3 个答案:

答案 0 :(得分:1)

Grails使用spring IOC,你的控制器和服务作为spring bean进行管理,当你在一个控制器内部定义一个服务时,spring会在控制器内部注入服务,代码无论如何都不会被链接,只需参考服务即可组。虽然它不是一个非常昂贵的操作,但您不希望定义不用于保持代码清洁的服务依赖性

答案 1 :(得分:1)

我认为在幕后它与Spring @Autowired注释的过程相同,所以你在启动时需要付出一点性能损失,但我认为这并不重要。

关于主题here还有另一个stackoverflow问题。

答案 2 :(得分:0)

  

服务代码是否与控制器代码相关联?

这没有意义。

实际上,grails中的服务默认为singleton。因此,如果您通过def serviceName注入服务,它将不会创建新的服务对象,而是引用相同的旧服务对象。
所以它当然不贵。

但是如果在服务中有一个属性静态session="prototype"或一些像这样的非单例。那么它很昂贵。