首页 > 解决方案 > 带有 JPA 示例代码和配置的 Spring Statemachine

问题描述

我正在尝试使用像 MySQL 这样的 RDBMS 来持久化 spring 状态机。即我需要存储和检索由弹簧状态机控制的我的实体的状态。我似乎找不到合适的文档或任何具有完整配置的示例代码。我能找到的只是示例代码片段,它没有显示我需要做的所有事情才能坚持下去。有没有人有任何示例代码显示如何在 RDBMS 上配置 spring 状态机?

谢谢

标签: springpersistspring-statemachine

解决方案


你看过坚持食谱吗?它可能有用。

我无法分享我的代码,但这是您可能需要的

1- 依赖

implementation("org.springframework.boot:spring-boot-starter-data-jpa")
    implementation("org.springframework.boot:spring-boot-starter-validation")
    implementation("org.springframework.statemachine:spring-statemachine-autoconfigure")
    implementation("org.springframework.statemachine:spring-statemachine-data-jpa")
    implementation("org.springframework.statemachine:spring-statemachine-starter")

2- 代码

2.1 机器配置(我使用的是硬编码工厂策略)

@Configuration
@EnableStateMachineFactory(contextEvents = false)
@RequiredArgsConstructor
public class StateMachineConfig
        extends EnumStateMachineConfigurerAdapter<S,E >

2.2 持久化配置

@Configuration
public class StateMachinePersistenceConfiguration {

    @Bean
    public StateMachineRuntimePersister<S, E, String> stateMachineRuntimePersister(
            final JpaStateMachineRepository jpaStateMachineRepository) {
        return new JpaPersistingStateMachineInterceptor<>(jpaStateMachineRepository);
    }

}

2.3 服务配置(允许您检索机器)

@RequiredArgsConstructor
@Configuration
public class StateMachineServiceConfig {

    private final StateMachineFactory<S, E> stateMachineFactory;
    private final StateMachineRuntimePersister<S, E, String> stateMachineRuntimePersister;

    @Bean
    public StateMachineService<S, E> stateMachineService() {
        return new DefaultStateMachineService<>(stateMachineFactory, stateMachineRuntimePersister);
    }

}

框架应该创建一个状态机表来允许你持久化状态机


推荐阅读