Spring Import ресурс на основе свойства в файле свойств - без использования Spring Spring - Условная загрузка контекста

Я хочу импортировать ресурс на основе значения свойства в файле свойств, есть несколько контекстных файлов, и Spring должен загружать только те, чье значение установлено в true. Эти значения различны для разных клиентов.

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

и я не могу использовать весенние профили здесь. Пожалуйста, предложите.

1 ответ

Решение

Вы можете использовать условные выражения Spring 4 для достижения такого поведения

Например:

@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;
        }
    }

}
Другие вопросы по тегам