0
条件の中でjobParameterを使用するために@ Boseの@StepScopeで@条件を使用しようとしていますが、条件の初期化中にJobScopeがアクティブではありません フラグが設定されているかどうかを確認し、このフラグが設定されている場合は、同じインタフェースの別のBeanをインスタンス化する必要があります。@StepScopeと@ Conditionと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とない条件を試してみましたが、それらはプログラムの先頭にintitializedますので、@value値はnullです。
ジョブパラメータが設定されている場合にのみBeanをロードする方法とは別の方法を示すこともできます。