基于Spring的Web应用程序的特定于环境的配置?

Ritesh Mengji :

我怎么知道Web应用程序的部署环境,例如它是本地的,dev,qa还是prod等。在运行时我可以在spring应用程序上下文文件中确定这种方法吗?

帕维尔:

不要在代码中添加逻辑来测试您正在哪个环境中运行-这是灾难的根源(或者至少在路上燃烧了大量的午夜石油)。

您使用Spring,因此请充分利用它。使用依赖注入为代码提供特定于环境的参数。例如,如果您需要在测试和生产中调用具有不同终结点的Web服务,请执行以下操作:

public class ServiceFacade {
    private String endpoint;

    public void setEndpoint(String endpoint) {
        this.endpoint = endpoint;
    }

    public void doStuffWithWebService() {
        // use the value of endpoint to construct client
    }
}

接下来,使用Spring的PropertyPlaceholderConfigurer(或PropertyOverrideConfigurer)从.properties文件或JVM系统属性填充此属性,如下所示:

<bean id="serviceFacade" class="ServiceFacade">
    <property name="endpoint" value="${env.endpoint}"/>
</bean>

<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
    <property name="locations">
        <value>classpath:environment.properties</value>
    </property>
</bean>

现在像这样创建两个(或三个或四个)文件-每个用于不同的环境。

在environment-dev.properties中:

env.endpoint=http://dev-server:8080/

在environment-test.properties中:

env.endpoint=http://test-server:8080/

现在,为每个环境获取适当的属性文件,将其重命名为environment.properties,然后将其复制到应用程序服务器的lib目录或它将出现在应用程序的类路径中的其他位置。例如,对于Tomcat:

cp environment-dev.properties $CATALINA_HOME/lib/environment.properties

现在部署您的应用程序-Spring在运行时设置端点属性时,它将替换值“ http:// dev-server:8080 /”。

有关如何加载属性值的更多详细信息,请参见Spring文档。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

使用PropertiesLauncher启动的Spring-boot(特定于配置文件)应用程序中的问题覆盖应用程序属性

如何为Spring Boot2应用程序提供特定于env的log4j2配置

如何基于请求访问Spring应用程序配置值?

Spring Boot应用程序中特定于环境的application.properties文件

访问特定于平台的应用程序数据区域

发送特定于应用程序的消息

使用应用程序设置来驱动特定于环境的设置,例如UseUrls

特定于环境的StructureMap配置?

如何使纯文本文件应用程序特定于Spring云配置服务器?

在POM中访问特定于Spring概要文件的应用程序属性

如何从Firebase托管应用程序访问特定于环境的Firebase功能端点?

在Grails服务中获取特定于环境的服务器应用程序URL

VueCLI3应用程序(nginx / docker)使用特定于环境的变量

Java EE Web应用程序和环境配置

特定于应用程序的权限设置

如何在Yeoman Ember应用程序中设置/获取特定于环境的变量

iOS中特定于应用程序的文件加密

我可以在tomcat 7中配置特定于应用程序的类路径目录吗?

从Eclipse在Tomcat中部署具有特定于应用程序配置的多个Web应用程序

特定于应用程序的DNS问题?

特定于应用程序的映射

特定于应用程序的权限

Spring + Hibernate应用程序的特定于环境的配置

当基于Spring的Web应用程序启动时,它必须以一些特定的URL开头

配置 HTTP 端点以关闭 Spring Boot Web 应用程序

Spring Web 应用程序中的映射配置错误

从 spring 配置自动装配 bean - 特定于环境

在外部 tomcat 上作为 war 运行时,Spring Boot 应用程序不读取特定于环境的 yaml 文件

AADSTS50146:需要使用特定于应用程序的签名密钥配置此应用程序