Spring通过配置文件的组合选择属性源

尼古拉斯:

我有多个由Spring配置文件驱动的环境,例如application-int.ymlapplication-dev.yml其内容类似:

  • application-int.yml
    ws:
       endpoint: http://my-soap-int-endpoint.com/
       mock: http://my-soap-int-mock-endpoint.com/
    
  • application-dev.yml
    ws:
      endpoint: http://my-soap-dev-endpoint.com/
      mock: http://my-soap-dev-mock-endpoint.com/
    

我的目标是使用基于以下属性两个环境名称以及是否将mock配置文件包括:

  • ws.endpoint来自,application-dev.yml用于dev个人资料
  • ws.endpoint来自,application-int.yml用于int个人资料
  • ws.mock来自,application-dev.yml用于dev mock个人资料
  • ws.mock来自,application-int.yml用于int mock个人资料

我需要将该值解析为一个变量url

@Configuration
public class SoapConfiguration {

    @Value("???")                  // based on 2 properties
    private String wsUrl;
}

我想避免基于的抽象配置类的复杂层次结构@Profile而且,我需要将两个变量(模拟和非模拟)保留在一个通用属性文件中。

有没有一种既可读又可维护的好方法?

mikhail.sharashin:

您可以wsUrl在构造函数中进行设置这不是一个优雅的解决方案,但它可以工作。Environmentbean 注入到您的计算机中,SoapConfiguration然后检查mock配置文件是否处于活动状态。
代码示例:

@Configuration
public class SoapConfiguration {
    private final String wsUrl;

    public SoapConfiguration(Environment environment) {
        if (Arrays.asList(environment.getActiveProfiles()).contains("mock")) {
            this.wsUrl = environment.getProperty("ws.mock");
        } else {
            this.wsUrl = environment.getProperty("ws.endpoint");
        }
    }
}

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

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

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何基于Spring配置文件加载属性文件

在Spring Boot中覆盖配置文件属性

使用Spring配置文件设置系统属性

在persistence.xml和spring配置文件中配置数据源之间的区别

如何通过Spring XML配置文件配置JPA EntityListener?

如何通过配置文件激活/停用Spring Security

Spring Boot未根据配置文件读取正确的属性

在Spring XML中通过EL导入spring配置文件

Spring Boot属性与依赖项中的配置文件

Spring Boot配置文件不选择属性文件

通过Spring Boot启动器包含配置文件

通过配置文件使用Yaml属性进行Spring Boot测试

如何从XML配置文件设置Spring属性?

具有application.properties的spring-boot数据源配置文件

组合配置文件

Spring Maven配置文件-根据编译配置文件设置属性文件

使用Jenkins可以选择Spring Boot配置文件吗?

Spring Cloud配置多个配置文件

如何在Spring Boot中选择配置文件

具有外部属性的Spring Boot配置文件

修改通过“文件”属性引用的自定义配置文件中的appSettings

Spring配置文件和属性占位符异常

从配置文件获取数据源

通过karaf 4上的pax-jdbc配置文件创建PostgreSQL数据源

根据 Spring 配置文件属性设置字段

在 Spring Cloud Config 中选择特定配置文件时,不会返回默认配置文件值

Spring boot 静态内容包括配置文件属性

如果有多个配置文件,则不会选择 Spring Boot 中的默认配置文件

Spring 配置文件組