使用特定于环境的值配置Grails服务的最佳方式是什么?我认为有两种选择:特定于环境的Grails服务配置
- 从服务类中访问grailsApplication值或
- 配置Config.groovy中或resources.groovy一豆关闭该服务的bean。
我见过几个帖子在stackoverflow和其他地方,显示如何做#1(访问服务中的grailsApplication)。其中一个这样的帖子是:Inject grails application configuration into service。
但是,我认为这会造成服务与Grails的不必要的耦合。这不是类似于在pojo中访问Spring的applicationContext,而不是配置/注入值?此外,我还没有得到任何好运,因此尚未在服务类的单元测试中工作。
两本书都有注入属性的例子(方法#2)。本书Grails 2权威指南第10章标题为“服务在行动”一节展示了如何做到这一点,但没有环境特定的价值。本书Groovy和Grails食谱第16-2节也展示了一个使用resources.groovy的例子,但我还没有能够使它工作。
以下博客文章也有一个很好的例子,但不是特定环境:http://ldaley.com/post/1253952347/getting-more-out-of-property-override-configuration。 Grails Reference的第15章也与这些示例一致,并说明如何在每个环境基础上设置bean上的属性。
但是,任何一种方法的例子都不能以任何方式给出任何意见或理由。这两种方法真的没有优点和缺点吗?注入方法不会更容易进行单元测试,并且更符合春季做事的方式吗?
Nathan
谢谢,这实际上是有道理的。最后,一些理性的方法! –
从你所说的话来看,Grails发明人似乎已经在思考上发生了转变,因为你所描述的问题类型与重复的值在春季配置中应该是相同的值。因此,对基本上集中在grailsApplication下的配置值的引用是一个实际的改进。也许用groovy来设置比在Java中更容易,否则它也可能在Spring中成为一个选项。 –
@NathanWard覆盖配置方法在某些情况下是非常有用的,主要是当你想要将属性值注入到你不控制的bean(例如由插件提供的属性值)时。 –