0
我试图使用条件与Spring批处理@StepScope使用条件中的jobParameter,但在条件初始化时,JobScope不活动 我试图确定是否设置标志,并只实例化一个bean当这个标志被设置时,否则应该实例化相同接口的另一个bean。是否可以将@StepScope与@Conditional和jobParameters一起使用?
目前,我试图做类似
interface IInter {
void bla();
}
@Component("A")
@Conditional(ACond.class)
@StepScope
class A implements IInter {
@Override
public void bla() {
//... do something ....
}
}
@Component("B")
@Conditional(BCond.class)
@StepScope
class B implements IInter {
@Override
public void bla() {
//... do something else ...
}
}
class ACond implements Condition {
@Value("#{jobParameters[AProp]}")
String jobPropA;
@Value("#{jobParameters[BProp]}")
String jobPropB;
@Override
public boolean matches(ConditionContext context, AnnotatedTypeMetadata metadata) {
return !Utils.isEmpty(jobPropA) && Utils.isEmpty(jobPropB);
}
}
class BCond implements Condition {
@Value("#{jobParameters[AProp]}")
String jobPropA;
@Value("#{jobParameters[BProp]}")
String jobPropB;
@Override
public boolean matches(ConditionContext context, AnnotatedTypeMetadata metadata) {
return Utils.isEmpty(jobPropA) && !Utils.isEmpty(jobPropB);
}
}
我试过的条件有和没有@StepScope但@Value值是零,因为他们可以在程序的开始intitialized。
这也是一个选项,让我看到一种不同的方式,只有在设置了jobparameter时才能加载bean。