как получить свойство приложения из ConditionContext - PullRequest
0 голосов
/ 25 апреля 2019

Я работаю на весне, но не на весенней загрузке. У меня есть класс, помеченный как @Component (но не как @Configuration [это не класс конфигурации]). Я хотел бы создать его на основе свойства serviceA.create в app.properties. В файле это выглядит так: serviceA.create=true. Я думаю, что в коде это сужается до:

@Override
    public boolean matches(final ConditionContext context, final AnnotatedTypeMetadata metadata) {

        return Boolean.valueOf(context.getEnvironment().getProperty("serviceA.create"));
    }

Но, основываясь на разных вопросах / ответах (например, это ) по одной и той же теме, звучит так, что добавление @PropertySource(value="classpath:config.properties") обязательно для того, чтобы это работало (чтобы фактически прочитать значение свойства).

Вопрос в том, смогу ли я получить собственность от ConditionContext без определения @PropertySource? потому что в настоящее время я получаю null без этой аннотации.


Это должно быть сделано следующим образом:

@Component
@Conditional(ServiceACondition.class)
@PropertySource(value="classpath:app.properties")
public class ServiceA {
(...)
}

и конд. класс

public class ServiceACondition implements Condition {
    @Override
    public boolean matches(final ConditionContext context, final AnnotatedTypeMetadata metadata) {

        return Boolean.valueOf(context.getEnvironment().getProperty("serviceA.start"));
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...