【发布时间】:2013-07-13 14:51:12
【问题描述】:
使用环境特定值配置 Grails 服务的最佳方式是什么?我相信有两种选择:
- 从服务类中访问 grailsApplication 值或
- 在 Config.groovy 或 resources.groovy 的 bean 闭包中配置服务 bean。
我在 stackoverflow 和其他地方看到了一些帖子,这些帖子展示了如何执行 #1(在服务中访问 grailsApplication)。一个这样的帖子是:Inject grails application configuration into service。
但是,我认为这会造成服务与 Grails 的不必要耦合。这不是类似于在 pojo 中访问 Spring 的 applicationContext 而不是配置/注入值吗?此外,到目前为止,我还没有任何运气让它在服务类的单元测试中工作。
两本书都有注入属性的示例(方法#2)。 The Definitive Guide to Grails 2,第 10 章,标题为“Services in Action”的一本书展示了如何做到这一点,但没有特定于环境的值。 Groovy and Grails Recipes 一书,第 16-2 节也展示了一个使用 resources.groovy 的示例,但我还不能让它工作。
以下博客文章也有一个很好的示例,但不是特定于环境的:http://ldaley.com/post/1253952347/getting-more-out-of-property-override-configuration。 Grails 参考的第 15 章也与这些示例一致,并展示了如何在每个环境的基础上设置 bean 的属性。
但是,任何一种方法的示例都没有给出任何意见或理由来以某种方式进行。这两种方法真的没有优点和缺点吗?注入方式不是更容易单元测试,更符合spring的做事方式吗?
内森
【问题讨论】: