環境固有の値を使用して Grails サービスを構成する最良の方法は何ですか? 次の 2 つのオプションがあると思います。
- サービスクラス内から grailsApplication の値にアクセスする、または
- Config.groovy または resources.groovy の bean クロージャーでサービス Bean を構成します。
#1 (サービスで grailsApplication にアクセスする) の方法を示すスタックオーバーフローやその他の場所での投稿をいくつか見ました。そのような投稿の 1 つに、Grails アプリケーション構成をサービスに注入する があります。
ただし、これにより、サービスと Grails との不必要な結合が生じると思います。これは、値を構成/注入するのではなく、pojo で Spring の applicationContext にアクセスすることに似ていませんか? また、これをサービスクラスの単体テストで機能させるにはまだ運がありません。
2 冊の本に、プロパティを注入する例があります (アプローチ #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 Reference の第 15 章もこれらの例と一致しており、環境ごとに Bean のプロパティを設定する方法を示しています。
ただし、どちらのアプローチの例も、何らかの方法でそれを行うための意見や合理性を示していません。どちらのアプローチにも長所と短所は本当にありませんか? インジェクション アプローチは単体テストが容易であり、春のやり方とより一貫性があるのではないでしょうか?
ネイサン