目前Spring状态机通过StateMachinePersister接口的实现,完成状态机状态的存储
目前已经提供的存储方式包含Redis,mongoDB,Jpa三种实现,分别对应JpaStateMachineRuntimePersister,RedisStateMachineRuntimePersister 和MongoDbStateMachineRuntimePersister
其中StateContext序列化的方式为kryo,序列化和反序列化都在实现类中自行实现了
基于redis的实例化工具使用
/* 实例化工具配置部分代码,在StateMachine配置类中 */
// 初始化redis连接工厂
@Bean
public RedisConnectionFactory redisConnectionFactory() {
RedisStandaloneConfiguration redisConfig = new RedisStandaloneConfiguration();
redisConfig.setHostName("1.1.1.1");
redisConfig.setPassword(RedisPassword.of("xxxx"));
redisConfig.setPort(6379);
return new JedisConnectionFactory(redisConfig);
}
// 通过名称进行区分(带有不同枚举导致不能混用)
@Bean(name = "newStateMachinePersister")
public RedisStateMachinePersister<NewStates, NewEvents> redisStateMachinePersister(RedisConnectionFactory connectionFactory) {
RedisStateMachineContextRepository<NewStates, NewEvents> repository = new RedisStateMachineContextRepository<>(connectionFactory);
return new RedisStateMachinePersister<>(new RepositoryStateMachinePersist<>(repository));
}
/* 实例化在项目中的实际引用 */
//状态数据实例化组件
@Resource(name = "newStateMachinePersister")
private StateMachinePersister<NewStates, NewEvents, String> newStateMachinePersister;
// 状态机状态的恢复
newStateMachinePersister.restore(newStateMachine, STATE_MACHINE_PREFIX + id);
// 状态机状态的存储
newStateMachinePersister.persist(newStateMachine, STATE_MACHINE_PREFIX + id);
文章仅作为个人学习整理
本文介绍了Spring State Machine如何通过StateMachinePersister接口实现状态的持久化,提到了Redis、mongoDB和Jpa三种存储方式,并详细讲解了Redis实现中的StateContext使用Kryo进行序列化和反序列化的操作。此外,还提供了基于Redis的实例化工具配置和在项目中的应用示例。
1130

被折叠的 条评论
为什么被折叠?



