我正在从事弹簧工作,但没有从事弹簧靴。我有一个标记为@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"));
}
但是基于同一主题的不同问题/答案(例如this),听起来必须添加@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"));
}
}