Spring导入资源基于属性文件中的属性 - 不使用spring profile - 条件上下文加载

时间:2017-05-03 09:24:12

标签: java spring spring-mvc

我想根据属性文件中的属性值导入资源,有几个上下文文件,spring应该只加载那些值设置为true的文件。这些值对于不同的客户是不同的。

<import if{property} = true resource="classpath*:prod-config.xml"/>

我不能在这里使用弹簧轮廓。请建议。

1 个答案:

答案 0 :(得分:1)

您可以使用Spring 4的Conditionals来实现该行为

例如:

@Configuration
@Conditional(MyConditionalProd.class)
@ImportResource("classpath*:prod-config.xml")
public class MyConditionalProdConfig {}

MyConditionalProd将实现条件逻辑:

public class MyConditionalProd implements ConfigurationCondition{

    @Override
    public ConfigurationPhase getConfigurationPhase() {
        return ConfigurationPhase.PARSE_CONFIGURATION;
    }

    @Override
    public boolean matches(ConditionContext context, AnnotatedTypeMetadata metadata) {
        String property = context.getEnvironment().getProperty("someProperty");
        if("prod".equals(property)) {
            return true;
        }else{
            return false;
        }
    }

}