Я работаю на весне, но не на весенней загрузке. У меня есть класс, помеченный как @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"));
}
}