首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在web项目中运行开发模式

在web项目中运行开发模式
EN

Stack Overflow用户
提问于 2013-09-16 09:07:23
回答 3查看 130关注 0票数 1

我有一个基于maven构建工具的Spring项目。在我的应用程序中,我必须向外部服务器调用web服务以获取一些数据.我已经把它实现了,一切都很好。

但在发展模式下,我宁愿避免它们。所以目前我有

public static boolean devel = false

我将上述布尔值与if else语句结合使用,以便如果在开发模式下,则提供静态数据。如果不采用开发模式,则进行web服务调用。

但我觉得这个布尔声明很脏。从这个意义上说,每次在生产中部署布尔值时,我都必须手动更正代码中的布尔值。有一次我忘了那件事造成了大破坏。

有什么好办法吗?我不希望在代码中声明这个变量,而是从构建过程中获得的某个常量,或者可能是一些VM参数。或者他们甚至可能是更好的方法。如果是这样的话,我如何将它合并到我的spring项目中。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-09-16 09:18:12

我要做的是让代码默认为生产行为,因此,让bool开发来自一个属性文件。classpath = false中的默认值,为了覆盖它,我将使用如下内容:

代码语言:javascript
复制
<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机器上运行我的应用程序

代码语言:javascript
复制
-Dexternal-config=file:/c:/debug.properties

该属性文件包含一些占位符,该占位符覆盖位于jar/war中的config.properties中存储的值。

票数 3
EN

Stack Overflow用户

发布于 2013-09-16 09:27:02

我认为一种“不错的方法”(如您所称)是使用依赖注入;使用春天CDI特性。这正是这种情况,依赖注入是有用的。

然后声明一个接口,该接口由两个不同的类实现:

  1. 连接到远程服务器的真正类,以及
  2. 返回静态数据的开发/测试类。

然后,启动配置将确定将这两个类中的哪个注入到应用程序中。

票数 1
EN

Stack Overflow用户

发布于 2013-09-16 11:22:58

Spring (3.1+)提供了一种指定@配置文件的方法,它可以与@配置注释一起使用。看看http://spring.io/blog/2011/02/14/spring-3-1-m1-introducing-profile/

使用这种方法,您可以为每个环境创建自己的配置bean(生产、开发、分期等)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18824198

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档