spring statemachine持久化

spring statemachine持久化

您不能通过使用普通的java序列化来持久化,因为对象图太丰富,并且包含太多对其他Spring上下文类的依赖关系。 是状态机的运行时表示形式,可用于将现有计算机还原到由特定对象表示的状态。

——弹簧状态机 - 参考文档 (spring.io)

spring官方表示不用直接用序列化方法来实现状态机的持久化。之前我是将statemachine存入一个hashmap中,但只能存在内存当中,docker容器重新部署之后,之前的数据就丢失了。为此,通过spring提供的持久化方法存入到redis当中。持久化内容StateMachineContextStateMachine,只是持久化当前状态快照,恢复状态,不要求同一状态机。

StateMachineContext 是状态机的运行时表示形式(存储状态机当前状态的快照,可以从中获取StateMachine),可用StateMachineContext对象将状态机还原到特定的状态 。

  • 首先,生成一个StateMachinePersist,这里是通过RedisConnectionFactory生成RepositoryStateMachinePersist,然后再包装输出StateMachinePersister,这里是RedisStateMachinePersister。

    @Configuration
    public class PersistConfig {
         
        @Autowired
        private RedisConnectionFactory redisConnectionFactory;
        /**
         * 注入RedisStateMachinePersister对象
         *
         * @return
         */
        @Bean(name = "RedisPersister")
        public RedisStateMachinePersister<SessionStatus, SessionEvent> redisPersister() {
         
            return new<
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

五道口社畜

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值