Grails:服务与Groovy类
文件说: Grails团队不鼓励 核心应用程序逻辑的嵌入 在控制器内部,因为它没有 促进重复使用和清洁分离 令人关切的问题 我在src/Groovy文件夹中有一个API控制器和几个Groovy类。这些类只是实现我的应用程序逻辑,因此API控制器中的操作是这样工作的:Grails:服务与Groovy类,grails,groovy,service,grails-controller,Grails,Groovy,Service,Grails Controller,文件说: Grails团队不鼓励 核心应用程序逻辑的嵌入 在控制器内部,因为它没有 促进重复使用和清洁分离 令人关切的问题 我在src/Groovy文件夹中有一个API控制器和几个Groovy类。这些类只是实现我的应用程序逻辑,因此API控制器中的操作是这样工作的: //index page def index = { render new IndexApi().index(params) as JSON } 我很好奇——有什么理由把我的应用程序逻辑从普通groovy类转移到服务中吗?
//index page
def index = {
render new IndexApi().index(params) as JSON
}
我很好奇——有什么理由把我的应用程序逻辑从普通groovy类转移到服务中吗?如果你想要事务性行为,你应该把逻辑放到服务中。否则您必须自己处理,这不符合使用Grails的精神
我本人不是grails专家,我将我的“非事务性”类放在服务层之外,比如构建器类、帮助器和其他非事务性但从服务层使用的逻辑。原因有三:
例如,要测试JSP,您需要一个HTTPRequest。对于请求,您需要一个HTTPSession和一个JSPWriter。这些需要会话上下文。因此,为了能够运行单个测试,您需要设置并初始化一大堆类。所有这些都是接口,实现都是私有的。因此,您必须自己实现实际的方法(全部300个)。你最好把这个做好,否则你的测试不会测试你想要的东西。实际上,服务不仅仅是事务。服务对于零配置可注入的单例组件非常有用,它们可以在不重新启动整个grails环境的情况下重新加载,它们可以作为人工制品被发现,因此可以通过远程处理插件自动公开