旅行社网站建设需求分析临沂网站设计

pingmian/2025/10/8 3:04:34/文章来源:
旅行社网站建设需求分析,临沂网站设计,齐齐哈尔铁峰建设局网站,python源码下载描述 在 Spring Boot 中实现状态机#xff0c;通常使用 Spring State Machine 框架进行实现。该框架可以帮助我们定义、创建和管理复杂的状态机。 接下来给出一个demo#xff0c;说明如何使用 Spring State Machine 框架实现状态机。 假设我们需要实现一个简单的订单状态机通常使用 Spring State Machine 框架进行实现。该框架可以帮助我们定义、创建和管理复杂的状态机。 接下来给出一个demo说明如何使用 Spring State Machine 框架实现状态机。 假设我们需要实现一个简单的订单状态机订单的状态可以是已创建、已确认、已发货、已完成和已取消。在订单生命周期中可以有以下事件 - 确认订单confirmOrder从已创建状态转换到已确认状态。 - 发货shipOrder从已确认状态转换到已发货状态。 - 确认收货receiveOrder从已发货状态转换到已完成状态。 - 取消订单cancelOrder从已创建或已确认状态转换到已取消状态。 现在让我们来实现这个订单状态机。 代码 在 pom.xml 文件中添加以下依赖 xml dependency groupIdorg.springframework.statemachine/groupId artifactIdspring-statemachine-core/artifactId version2.1.2.RELEASE/version /dependency 对于该状态机我们可以定义以下枚举状态以及事件 java public enum States { CREATED, CONFIRMED, SHIPPED, COMPLETED, CANCELLED } java public enum Events { CONFIRM_ORDER, SHIP_ORDER, RECEIVE_ORDER, CANCEL_ORDER } 创建一个状态机配置类用于管理状态机的定义和创建。从 StateMachineConfigurerAdapter 继承并添加 Configuration 和 EnableStateMachine 注解。 java Configuration EnableStateMachine public class OrderStateMachineConfig extends StateMachineConfigurerAdapterStates, Events { Override public void configure(StateMachineStateConfigurerStates, Events states) throws Exception { states .withStates() .initial(States.CREATED) .state(States.CONFIRMED) .state(States.SHIPPED) .state(States.COMPLETED) .state(States.CANCELLED) .end(States.COMPLETED) .end(States.CANCELLED); } Override public void configure(StateMachineTransitionConfigurerStates, Events transitions) throws Exception { transitions .withExternal() .source(States.CREATED) .target(States.CONFIRMED) .event(Events.CONFIRM_ORDER) .and() .withExternal() .source(States.CONFIRMED) .target(States.SHIPPED) .event(Events.SHIP_ORDER) .and() .withExternal() .source(States.SHIPPED) .target(States.COMPLETED) .event(Events.RECEIVE_ORDER) .and() .withExternal() .source(States.CREATED) .target(States.CANCELLED) .event(Events.CANCEL_ORDER) .and() .withExternal() .source(States.CONFIRMED) .target(States.CANCELLED) .event(Events.CANCEL_ORDER); } } 在上述通过 Config 注解启用了 State Machine 的例子中我们定义了状态机的状态和事件转换分别是通过 configure 方法实现 StateMachineStateConfigurer 和 StateMachineTransitionConfigurer。我们定义了订单状态和事件定义了每个状态可以发生的转换其中 withExternal() 表示外部转换。 接下来我们创建一个状态机服务该服务将使用上述状态机配置进行初始化然后使用状态机按照规定的转换流程进行状态转换。 java Service public class OrderStateMachineService { Autowired private StateMachineStates, Events stateMachine; public boolean sendEvent(final String orderId, final Events event) { stateMachine.start(); MessageEvents message MessageBuilder.withPayload(event) .setHeader(orderId, orderId) .build(); return stateMachine.sendEvent(message); } } 我们注入了 StateMachineStates, Events 类型的 stateMachine 对象并定义了一个事件触发方法 sendEvent()。该方法通过设置事件消息的负载将事件发送给状态机进行状态转换。 我们测试一下 java RestController RequestMapping(/order) public class OrderController { Autowired private OrderStateMachineService orderStateMachineService; PostMapping(/confirm) public boolean confirmOrder(RequestBody final Order order) { return orderStateMachineService.sendEvent(order.getId(), Events.CONFIRM_ORDER); } PostMapping(/ship) public boolean shipOrder(RequestBody final Order order) { return orderStateMachineService.sendEvent(order.getId(), Events.SHIP_ORDER); } PostMapping(/receive) public boolean receiveOrder(RequestBody final Order order) { return orderStateMachineService.sendEvent(order.getId(), Events.RECEIVE_ORDER); } PostMapping(/cancel) public boolean cancelOrder(RequestBody final Order order) { return orderStateMachineService.sendEvent(order.getId(), Events.CANCEL_ORDER); } } 测试结果如下 1、以上接口依次调用程序正常 2、不按顺序调用会报错 优缺点说明 1、这种实现方式会受集群部署影响因为这些状态是存在内存中的当然可以通过其它方式解决比如持久化道数据库中 2、如果订单周期比较长并且数据量比较大放在内存中会引发oom

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/89707.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

网站首页收录突然没有了html网站自带字体怎么做

题目:输入两个正整数m和n,求其最大公约数和最小公倍数。 程序分析: (1)最小公倍数输入的两个数之积除于它们的最大公约数,关键是求出最大公约数; (2)求最大公约数用辗…

建设公司网站编号江都住房和建设局网站

目录 前言 一、技术栈 二、系统功能介绍 员工信息管理 预案信息管理 预案类型统计 事件类型管理 三、核心代码 1、登录模块 2、文件上传模块 3、代码封装 前言 随着信息技术在管理上越来越深入而广泛的应用,管理信息系统的实施在技术上已逐步成熟。本文介绍…

北京西站在几环校友网站建设

前端工程化是使用软件工程的方法来单独解决前端的开发流程中模块化、组件化、规范化、自动化的问题,其主要目的为了提高效率和降低成本。 前端工程化实现技术栈 前端工程化实现的技术栈有很多,我们采用ES6nodejsnpmViteVUE3routerpiniaaxiosElement-plus组合来实现 ECMAScri…

自己做的网站视频播放不了中国上市网络公司排名

https://www.cnblogs.com/qiankun-site/p/5886673.html 1、此监听器主要用于解决java.beans.Introspector导致的内存泄漏的问题 2、此监听器应该配置在web.xml中与Spring相关监听器中的第一个位置(也要在ContextLoaderListener的前面)3、JDK中的java.beans.Introspector类的用途…

广州市公司网站建设足球比赛直播平台app

一、Mysql基本介绍 当谈论MySQL时,通常指的是一个流行的开源关系型数据库管理系统(RDBMS)。MySQL是由瑞典的开发者在1995年创建的,后来被Sun Microsystems收购,最终成为Oracle Corporation的一部分。以下是关于MySQL的…

建站成本深圳网络营销推广案例

apple mac 下使用机械键盘的办法,键盘映射工具软件,apple mac Mechanical keyboard 想在苹果电脑 mac 系统下使用 机械键盘,大部分机械键盘不是为mac设计的,所以需要用软件做一下键盘映射。 推荐使用这个:https://pqrs…

手机网站首页怎么做教育类网站 前置审批

#-*- coding: utf-8 -*-""" 思路 核心:每次落稳之后截图,根据截图算出棋子的坐标和下一个块顶面的中点坐标,根据两个点的距离乘以一个时间系数获得长按的时间识别棋子:靠棋子的颜色来识别位置,通过截图…

网页制作培训网站辽宁注册公司网站

当玩家或用户在启动某些游戏和应用程序时,可能会遭遇到一个系统错误提示:“由于找不到xinput1_3.dll,无法继续执行代码l”。这种情况通常指出系统中DirectX组件存在问题。以下我们将介绍几种常用的解决方法,并提供详细的操作步骤。 一.找不到…

合肥专业做淘宝网站建设wordpress 下拉菜单插件

Spring 是线程安全的,支持多线程并发调用。但在某种特殊情况下,使用 BeanFactory 的 getBean 方法,我成功拿到了未经初始化的 Bean(是BUG,亦或是出于某种原因考虑的特性?)。 一、获取到的 Bean 为什么未初始化? 通过 getBean 获取到未经过初始化的 Bean 需要满足如下…

福州网站建设招商娄底企业网站建设公司

索引的设计原则 索引覆盖是什么: 索引(在MySQL中也叫做“键(key)”) 是存储引擎用于快速找到记录的一种数据结构。这是索引的基本功能。 索引对于良好的性能非常关键。尤其是当表中的数据量越来越大时,索引…

在线免费视频网站推广平面广告设计用什么软件

学习目的: (1) 熟悉SPI接口和它的读写时序; (2) 复习Verilog仿真语句中的$readmemb命令和$display命令; (3) 掌握SPI接口写时序操作的硬件语言描述流程(本例仅…

python 做网站开发吗做网站如何选择数据源

出现原因: 此处的offset的值表示的是盒子模型经过计算后的实际偏移量,通常是margin及定位偏移量之和(flex布局导致的偏移也会计算在内)。在此处也无需消除。 解决办法: 父元素设置宽高。设置margin为负数&#xff0…

做租房信息网站淘宝怎么优化关键词排名

区别: 1,Resource(JSR-250标准注解,推荐使用它来代替Spring专有的Autowired注解) 2,Spring 不但支持自己定义的Autowired注解,还支持几个由JSR-250规范定义的注解,它们分别是Resourc…

广西建设厅考试网站博客网站开发报告文库

OpenCV7-copyTo截取ROI copyTo截取感兴趣区域 copyTo截取感兴趣区域 有时候,我们只对一幅图像中的部分区域感兴趣,而原图像又十分大,如果带着非感兴趣区域一次处理,就会对程序的内存造成负担,因此我们希望从原始图像中…

两学一做学习网站更多标签的适用场景

如果你的操作系统是 Windows,而你想要连接 Linux 服务器相互传送文件,那么你需要一个简称 SSH 的 Secure Shell 软件。实际上,SSH 是一个网络协议,它允许你通过网络连接到 Linux 和 Unix 服务器。SSH 使用公钥加密来认证远程的计算…

代理注册seo是什么职业

问题描述   JSON (JavaScript Object Notation) 是一种轻量级的数据交换格式,可以用来描述半结构化的数据。JSON 格式中的基本单元是值 (value),出于简化的目的本题只涉及 2 种类型的值:   * 字符串 (string):字符串是由双引号…

山西省建设执业资格注册中心网站软件制作公司排名

1.介绍和基础操作 Python中的元组(Tuple)是不可变有序序列,可以容纳任意数据类型(包括数字、字符串、布尔型、列表、字典等)的元素,通常用圆括号() 包裹。与列表(List)类似&#xff…

专业网站设计服务在线咨询义乌企业网站

FROM : http://blog.ityao.com/archives/581 如果想用Flash/Flex监听浏览器的关闭事件,可以通过JavaScript的window.onbeforeunload事件进行监听然后JS调用Flash中的函数。在swf所在页面的JavaScript中添加如下代码JS中代码:(这里设定swf文件…

破解网站后台账号密码上海做网站的公司多少钱

也许有些人是学C出身,对于Java几乎不了解。一时心血来潮想学学android开发,于是下载了Eclipse,安装了SDK,有模有样的学习起来。也许是懒惰了,对于java一直总是提不起精神。于是确定使用DreamweaverJquery mobilePhoneg…

比较好的公文写作网站wordpress菜单怎么添加次级菜单

函数的三种调用方式:1、函数作为表达式中的一项出现在表达式中,例“zmax(x,y)”;2、函数作为一个单独的语句,例“printf("%d",a)”;3、函数作为调用另一个函数时的实参,例“printf("%d"…