spring状态机

该博客介绍了如何在Java项目中使用Spring Statemachine库来配置和操作状态机。通过添加依赖,定义状态和事件枚举,配置状态机并设置状态转换,最后在服务类中启动、发送事件和停止状态机,实现状态的自动切换。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

<dependency> <groupId>org.springframework.statemachine</groupId>

    <artifactId>spring-statemachine-core</artifactId>

    <version>2.3.0.RELEASE</version> 

</dependency>

 

public enum States {

    INITIAL, STATE1, STATE2, FINAL

}

public enum Events {

    EVENT1, EVENT2

}

 

@Configuration

@EnableStateMachine

public class StateMachineConfig extends EnumStateMachineConfigurerAdapter<States, Events> {

    @Override

    public void configure(StateMachineStateConfigurer<States, Events> states) throws Exception {

        states

            .withStates()

                .initial(States.INITIAL)

                .states(EnumSet.allOf(States.class));

    }

    @Override

    public void configure(StateMachineTransitionConfigurer<States, Events> transitions) throws Exception {

        transitions

            .withExternal()

                .source(States.INITIAL).target(States.STATE1).event(Events.EVENT1)

                .and()

            .withExternal()

                .source(States.STATE1).target(States.STATE2).event(Events.EVENT2)

                .and()

            .withExternal()

                .source(States.STATE2).target(States.FINAL);

    }

}

 

@Service

public class StateMachineService {

    @Autowired

    private StateMachine<States, Events> stateMachine;

    public void execute() {

        stateMachine.start();

        stateMachine.sendEvent(Events.EVENT1);

        stateMachine.sendEvent(Events.EVENT2);

        stateMachine.stop();

    }

}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值