所以我有以下这种情况:
@Component
@Scope("prototype")
public class MyStateMachineFactory {
public StateMachine<States, Events> build() {
StateMachineBuilder.Builder<States, Events> builder = StateMachineBuilder.builder();
builder.configureStates();
// rest of the sate machine config
return builder.build()
}
}
现在,将这个原型连接到这样的Spring Singleton bean中
@Component
public class Processor {
@Autowired
private final ObjectFactory<MyStateMachineFactory> factory;
public process() {
factory.getObject().build();
// rest of the processing
}
}
所以我的原型bean将仅存在于process方法内部。
我的问题是:我定义并绑定到该原型bean中的Guards和Actions可以是简单的单例bean(或者它们也需要是原型)?没有任何守卫或行动维持任何状态。只是定义了Guard.evaluate和Action.execute方法。我怀疑应该没有线程问题,因为将StateContext作为参数传递给这些方法,但是我想知道在某种情况下,Guard和/或Action是否在幕后采用StateContext进行了调整可能存在线程问题