使用环境特定值配置 Grails 服务的最佳方式是什么?我相信有两种选择:
- 从服务类中访问 grailsApplication 值或
- 在 Config.groovy 或 resources.groovy 的 beans 闭包中配置服务 bean。
我在 stackoverflow 和其他地方看到了几篇文章,这些文章展示了如何做 #1(在服务中访问 grailsApplication)。其中一篇文章是:将 grails 应用程序配置注入服务。
但是,我认为这会造成服务与 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的做事方式吗?
弥敦道