使用特定于环境的值配置Grails服务的最佳方法是什么?我认为有两种选择:
我在stackoverflow和其他地方看到了一些展示如何执行#1(在服务中访问grailsApplication)的帖子。其中一个帖子是:将grails应用程序配置注入服务。
两本书有注入属性的示例(方法#2)。本书《Grails 2的权威指南》第10章题为“实际服务”的一节介绍了如何做到这一点,但没有特定于环境的价值。Groovy和Grails Recipes一书的第16-2节也展示了一个使用资源的示例。太棒了,但我也没能让它工作。
下面的博客文章也有一个很好的例子,但不是特定于环境的:http://ldaley.com/post/1253952347/getting-more-out-of-property-override-configuration.Grails参考资料的第15章也与这些示例一致,并展示了如何在每个环境的基础上设置bean的属性。
然而,这两种方法的例子都没有给出任何意见或合理的方法。这两种方法真的没有利弊吗?注入方法不是更容易进行单元测试并且更符合spring的工作方式吗?
内森
服务(服务文件夹中存在的类)的概念与参考资料中定义的Springbean有所不同。groovy。
对于服务,Grails已经设置了事务:
服务通常涉及协调域类之间的逻辑,因此通常涉及跨越大型操作的持久性。考虑到服务的性质,它们经常需要事务性行为。您可以将编程事务与withTransaction方法结合使用,但是这是重复的,并且没有充分利用Spring底层事务抽象的功能。
默认情况下,您声明的Springbean不是事务性的。
“然而,我认为这会造成服务与Grails不必要的耦合。”
由于Grails服务不同于SpringBeans,我认为使用方法#1没有问题。
对于单元测试,您需要手动连接服务实例。例子:
class MyService {
def grailsApplication
}
class MyServiceTests {
MyService getServiceInstance() {
MyService myService = new MyService()
myService.grailsApplication = grailsApplication //static attribute in unit tests
return myService
}
}
我会说用你觉得更舒服的。我倾向于访问grailsApplication。直接从服务中进行配置,因为这样可以使配置更加“语义化”(因为没有更好的词),也就是说,您可以根据配置选项所做的事情而不是它们控制的bean来命名配置选项。如果两个(或更多)不同的bean需要知道站点管理员的电子邮件地址(例如),那么它们都可以读取grailsApplication。配置。myapp。管理电子邮件,而不是我必须配置bean。监视器服务。destinationEmail和beans。用户服务。分别来自电子邮件。
在单元测试中,您无论如何都必须模拟grailsApplication
配置,因此为您的服务需要读取的配置选项填充测试值没什么大不了的。
问题内容: 我使用martini在Go中有一个GAE应用程序。我需要能够设置环境变量以告诉martini它应该使用生产设置进行初始化。根据Python文档,您可以在app.yaml中设置环境变量。我没有在Go docs中 看到任何有关此的内容,但我猜想它应该可以正常工作。 我需要能够将环境变量设置为,但是我只想在实际投入生产时(即)进行操作。有什么方法可以告诉您仅在非开发服务器上运行吗? 问题答案
我需要为不同的环境加载属性,如DEV、QA和我为每个环境都有不同的属性文件。因此,我通过在服务器中设置environment属性并访问该值以加载相应的属性文件来解决这一问题。在谷歌搜索时,我发现spring环境配置文件提供了类似场景的解决方案。然而,即使在这里,我也必须将服务器中的active-profile变量设置为环境变量。 与本机方法相比,使用spring环境配置文件有什么好处?
问题内容: 我用来将货币从BigDecimal格式化为字符串。按预期工作,问题在于我们的主要目标是荷兰市场,而默认的荷兰格式很奇怪。 让我解释一下,当格式化-125时,荷兰语将得到“€125-”(预期为“-€125”)。英国按预期方式提供“-£125.50”。 我可以检查语言环境是否为荷兰语,然后在每次我要设置小数格式时都提供一个模式。但是我更喜欢一个解决方案,它可以覆盖荷兰的格式设置。我在考虑以
1.下载并安装Jdk 传送门,下载完成以后,按照提示一步一步执行即可。 2.配置Jdk 传送门。 3.下载AndroidStudio 传送门,我一般选择推荐安装的那个。不要想着去谷歌官网下载,不要问为什么。 4.安装配置AndroidStudio。传送门,后续会重新传送一个门。 5.下载并安装nodejs 传送门。 6.安装weex命令行工具。打开命令行,执行命令:npm install -g w
主要内容:下载Erlang,Erlang安装,Erlang配置,在流行IDE上安装插件现在在开始使用 Erlang 编程工作之前,需要确保在你的系统上运行 Erlang 全功能版本。 本节将学习在 Windows 10机器上安装 Erlang 及后续的 Erlang 开发环境配置。 确保在继续安装前系统满足以下要求 系统要求 内存 2 GB RAM (推荐) 硬盘空间 没有最低要求,最好是有足够的硬盘空间来存储应用程序就可以了满足 Erlang 的应用要求了 操作系统版本 E
我这样配置Spring Cloud Config服务器: 由于某些原因,resolvePlaceholders不适用于JSON表示,因此服务器配置客户机需要知道服务器上配置的所有ENV变量。 是否可以强制JSON表示resolvePlaceholders与纯文本(属性)表示相同?