Получение экземпляра ConfigurationProperties без использования @Autowire - PullRequest
0 голосов
/ 10 июня 2019

Есть ли способ получить бин, аннотированный аннотацией @ConfigurationProperties, не используя аннотацию @Autowire, а скорее предоставив prefix?

У меня есть эта аннотация ограничения, где я нахожусьпередача имени свойства, которое помогает с принятием решения относительно проверки.Зная полное имя свойства, я хотел бы проверить значение этого ключа

Ответы [ 2 ]

2 голосов
/ 10 июня 2019

Зная полное имя свойства, я хотел бы проверить значение этого ключа

Тогда иди получить собственность:

@Autowired
private Environment env;

// method here
    String value = this.env.getProperty(propName);
0 голосов
/ 13 июня 2019

Чтобы переопределить свойство и затем откатить его обратно:

protected void overrideProperties(Map<String, String> overrideMap) {
    log.info("Overriding properties = {}", overrideMap);
    Environment env = appContext.getEnvironment();
    if (env instanceof ConfigurableEnvironment) {
        ConfigurableEnvironment confEnv = (ConfigurableEnvironment) env;
        MutablePropertySources sources = confEnv.getPropertySources();
        // removing in case rollback was not done
        if (sources.contains(TEST_RESOURCE_PROPERTIES_OVERRIDE_NAME)) {
            sources.remove(TEST_RESOURCE_PROPERTIES_OVERRIDE_NAME);
        }
        Properties overrides = new Properties();
        overrides.putAll(overrideMap);
        sources.addFirst(new PropertiesPropertySource(TEST_RESOURCE_PROPERTIES_OVERRIDE_NAME, overrides));
        // this triggers changes in beans annotated with @ConfigurationProperties and updates @Value fields
        appContext.publishEvent(new EnvironmentChangeEvent(overrideMap.keySet()));
    }
    // this should never happen
    else {
        log.info("Unable to override properties as Environment is not of type ConfigurableEnvironment");
    }
}

protected void rollbackOverriddenProperties(Map<String, String> overrideMap) {
    log.info("Rolling back properties = {}", overrideMap);
    Environment env = appContext.getEnvironment();
    if (env instanceof ConfigurableEnvironment) {
        ConfigurableEnvironment confEnv = (ConfigurableEnvironment) env;
        MutablePropertySources sources = confEnv.getPropertySources();
        sources.remove(TEST_RESOURCE_PROPERTIES_OVERRIDE_NAME);
        // this triggers changes in beans annotated with @ConfigurationProperties and updates @Value fields
        appContext.publishEvent(new EnvironmentChangeEvent(overrideMap.keySet()));
    }
    // this should never happen
    else {
        log.info("Unable to rollback overridden properties as Environment is not of type ConfigurableEnvironment");
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...