StateMachine 状态机机制深入解析状态机机制深入解析
主要介绍了,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可
以参考下
前言前言
Spring StateMachine 让状态机结构更加层次化,可以帮助开发者简化状态机的开发过程。
之前,我们使用二维数组实现状态机机制,现在,我们来用 Spring StateMachine 进行改造。
环境依赖环境依赖
修改 POM 文件,添加 spring-statemachine-core 依赖。
<dependency>
<groupId>org.springframework.statemachine</groupId>
<artifactId>spring-statemachine-core</artifactId>
<version>1.2.0.RELEASE</version>
</dependency>
状态和事件状态和事件
现在,我以用户注册为案例,来讲解状态和事件之间的状态机机制。
状态枚举状态枚举
注册有哪些状态呢,我们来想想,应该有4个状态:未连接、已连接、注册中、已注册。
public enum RegStatusEnum {
// 未连接
UNCONNECTED,
// 已连接
CONNECTED,
// 注册中
REGISTERING,
// 已注册
REGISTERED;
}
事件枚举事件枚举
相对应的,存在几个核心事件:连接、注册、注册成功、注册失败、注销。
public enum RegEventEnum {
// 连接
CONNECT,
// 注册
REGISTER,
// 注册成功
REGISTER_SUCCESS,
// 注册失败
REGISTER_FAILED,
// 注销
UN_REGISTER;
}
状态机配置状态机配置
@Configuration
@EnableStateMachine
public class StateMachineConfig extends EnumStateMachineConfigurerAdapter<RegStatusEnum, RegEventEnum> {
}
@EnableStateMachine注解,标识启用 Spring StateMachine 状态机功能。
初始化状态机状态初始化状态机状态
我们需要初始化状态机的状态。
@Override
public void configure(StateMachineStateConfigurer<RegStatusEnum, RegEventEnum> states) throws Exception {
states.withStates()
// 定义初始状态
.initial(RegStatusEnum.UNCONNECTED)
// 定义状态机状态