我想根据属性文件中的属性值导入资源,有几个上下文文件,spring应该只加载那些值设置为true的文件。这些值对于不同的客户来说是不同的。
<import if{property} = true resource="classpath*:prod-config.xml"/>
我不能在这里使用 Spring 配置文件。请提出建议。
最佳答案
您可以使用 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;
}
}
}
关于java - Spring 根据属性文件中的属性导入资源 - 不使用 spring 配置文件 - 条件上下文加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43756039/