简单网站建设运营,wordpress跳过短代码,屏蔽wordpress头像,南平市建设集团网站目录
通过IOC实现策略模式
通过AOP实现拦截
通过Event异步解耦
通过Spring管理事务 通过IOC实现策略模式 很多时候#xff0c;我们需要对不同的场景进行不同的业务逻辑处理举个例子#xff0c;譬如不同的场景需要不同支付方式#xff0c;普通的逻辑是使用if-else#x…目录
通过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的实现如JDBCMybatisHibernate等让我们不用再关心下游的事务提供方究竟是谁直接启动事务即可如下代码所示 但是我们在使用事务的时候一定要注意不能在事务中处理分布式缓存RPC等操作这样做有两个坏处一个是RPC的RT很长有可能引起长事务的问题另一方面是如果事务执行失败进行回滚RPC操作的调用是无法回滚的当然对于声明式的事务也不能滥用它有可能会导致一些问题