码农知识堂 - 1000bd
Python
PHP
JS/TS
JAVA
C/C++
C#
GO
Kotlin
Swift
Spring在业务中常见的使用方式
目录
通过IOC实现策略模式
通过AOP实现拦截
通过Event异步解耦
通过Spring管理事务
通过IOC实现策略模式
很多时候,我们需要对不同的场景进行不同的业务逻辑处理
举个例子,譬如不同的场景需要不同支付方式,普通的逻辑是使用if-else,如下所示:
如果sence越来越多,这种if-else显然非常不合适,这就需要我们借助Spring来完成策略模式
这样调用方只需要调用Payfactory#get即可,不需要感知内部的实现细节和逻辑
需要说明的是,这里使用了InitializingBean只是实现方式之一,还有其他的实现方式,如通过Autowired注解,BeanPostProcess等,这里不做过多赘述
通过AOP实现拦截
很多时候,我们一般是通过注解和AOP相结合
大概的实现思路就是先定义一个注解,然后通过AOP去发现使用过该注解的类,对该类的方法进行代理处理,增加额外的逻辑,譬如参数校验,缓存,日志打印等等,如下代码所示:
参数校验
缓存逻辑
日志打印
通过Event异步解耦
很多时候,可能一个单据状态的改变,要触发很多下游的行为
举个例子:订单从确认订单变为支付成功,就要触发物流的发货,财务的记账,edm触达等等
但是如果订单状态改变同步触发下游的动作,这样对订单业务非常不友好,下游的每次变动都需要上游感知
所以,对于这种情况,我们就需要Event异步解耦
具体说就是订单状态改变后,可以发出来一个Event事件,下游只感知这个Event事件,如果监听到这个事件,就去做自己对应的业务处理;如下代码所示:
需要注意的是,SpringEvent有同步模式和异步模式,这里可以根据具体的业务进行配置
通过Spring管理事务
Spring的事务抽象了下游不同DataSource的实现(如,JDBC,Mybatis,Hibernate等),让我们不用再关心下游的事务提供方究竟是谁,直接启动事务即可
如下代码所示:
但是,我们在使用事务的时候,一定要注意,不能在事务中处理分布式缓存,RPC等操作,这样做有两个坏处,一个是RPC的RT很长,有可能引起长事务的问题,另一方面是如果事务执行失败进行回滚,RPC操作的调用是无法回滚的,当然对于声明式的事务也不能滥用,它有可能会导致一些问题
相关阅读:
Phoenix Digital网络模块——将新的PLC连接到传统远程I/O
太戈编程第456、457、458题
HTML躬行记(4)——Web音视频基础
职场中的“显眼包”却是领导的心头宝!
基于Java的计算机机房作业管理系统(Vue.js+SpringBoot)
【错误记录】IntelliJ IDEA 打包包含依赖库的 Jar 包执行报错 ( Invalid signature file digest for Manifest main attribute )
【python】函数重构
计算机毕业设计ssm社会热点在线系统rghc9系统+程序+源码+lw+远程部署
U盘装CentOS 7 遇到的问题
企业如何选择低代码开发平台
原文地址:https://blog.csdn.net/weixin_59624686/article/details/133691950
最新文章
攻防演习之三天拿下官网站群
数据安全治理学习——前期安全规划和安全管理体系建设
企业安全 | 企业内一次钓鱼演练准备过程
内网渗透测试 | Kerberos协议及其部分攻击手法
0day的产生 | 不懂代码的"代码审计"
安装scrcpy-client模块av模块异常,环境问题解决方案
leetcode hot100【LeetCode 279. 完全平方数】java实现
OpenWrt下安装Mosquitto
AnatoMask论文汇总
【AI日记】24.11.01 LangChain、openai api和github copilot
热门文章
十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
奉劝各位学弟学妹们,该打造你的技术影响力了!
五年了,我在 CSDN 的两个一百万。
Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
面试官都震惊,你这网络基础可以啊!
你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
心情不好的时候,用 Python 画棵樱花树送给自己吧
通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
13 万字 C 语言从入门到精通保姆级教程2021 年版
10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系
2656653265@qq.com
京ICP备2022015340号-1
正则表达式工具
cron表达式工具
密码生成工具
京公网安备 11010502049817号