我有一个基于maven构建工具的Spring项目。在我的应用程序中,我必须向外部服务器调用web服务以获取一些数据.我已经把它实现了,一切都很好。
但在发展模式下,我宁愿避免它们。所以目前我有
public static boolean devel = false
我将上述布尔值与if else语句结合使用,以便如果在开发模式下,则提供静态数据。如果不采用开发模式,则进行web服务调用。
但我觉得这个布尔声明很脏。从这个意义上说,每次在生产中部署布尔值时,我都必须手动更正代码中的布尔值。有一次我忘了那件事造成了大破坏。
有什么好办法吗?我不希望在代码中声明这个变量,而是从构建过程中获得的某个常量,或者可能是一些VM参数。或者他们甚至可能是更好的方法。如果是这样的话,我如何将它合并到我的spring项目中。
发布于 2013-09-16 09:18:12
我要做的是让代码默认为生产行为,因此,让bool开发来自一个属性文件。classpath = false中的默认值,为了覆盖它,我将使用如下内容:
<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="ignoreResourceNotFound" value="true"/>
<property name="locations">
<list>
<value>classpath:config.properties</value>
<value>${external-config}</value>
</list>
</property>
</bean>在我的dev机器上运行我的应用程序
-Dexternal-config=file:/c:/debug.properties该属性文件包含一些占位符,该占位符覆盖位于jar/war中的config.properties中存储的值。
发布于 2013-09-16 09:27:02
我认为一种“不错的方法”(如您所称)是使用依赖注入;使用春天或CDI特性。这正是这种情况,依赖注入是有用的。
然后声明一个接口,该接口由两个不同的类实现:
然后,启动配置将确定将这两个类中的哪个注入到应用程序中。
发布于 2013-09-16 11:22:58
Spring (3.1+)提供了一种指定@配置文件的方法,它可以与@配置注释一起使用。看看http://spring.io/blog/2011/02/14/spring-3-1-m1-introducing-profile/
使用这种方法,您可以为每个环境创建自己的配置bean(生产、开发、分期等)。
https://stackoverflow.com/questions/18824198
复制相似问题