返回顶部
首页 > 资讯 > 精选 >Spring Boot怎么干掉 if else
  • 665
分享到

Spring Boot怎么干掉 if else

2023-06-19 12:06:27 665人浏览 泡泡鱼
摘要

本篇内容介绍了“Spring Boot怎么干掉 if else”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!需求这里虚拟一个业务需求,让大家

本篇内容介绍了“Spring Boot怎么干掉 if else”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

需求

这里虚拟一个业务需求,让大家容易理解。假设有一个订单系统,里面的一个功能是根据订单的不同类型作出不同的处理。

订单实体:

Spring Boot怎么干掉 if else

service接口:

Spring Boot怎么干掉 if else


传统实现

根据订单类型写一堆的if else:

Spring Boot怎么干掉 if else


策略模式实现

利用策略模式,只需要两行即可实现业务逻辑:

Spring Boot怎么干掉 if else

可以看到上面的方法中注入了HandlerContext,这是一个处理器上下文,用来保存不同的业务处理器,具体在下文会讲解。我们从中获取一个抽象的处理器AbstractHandler,调用其方法实现业务逻辑。

现在可以了解到,我们主要的业务逻辑是在处理器中实现的,因此有多少个订单类型,就对应有多少个处理器。以后需求变化,增加了订单类型,只需要添加相应的处理器就可以,上述OrderServiceV2Impl完全不需改动。

我们先看看业务处理器的写法:

Spring Boot怎么干掉 if else

Spring Boot怎么干掉 if else

Spring Boot怎么干掉 if else

首先每个处理器都必须添加到spring容器中,因此需要加上@Component注解,其次需要加上一个自定义注解@HandlerType,用于标识该处理器对应哪个订单类型,最后就是继承AbstractHandler,实现自己的业务逻辑。

自定义注解 @HandlerType:

Spring Boot怎么干掉 if else

抽象处理器 AbstractHandler:

Spring Boot怎么干掉 if else

自定义注解和抽象处理器都很简单,那么如何将处理器注册到spring容器中呢?

具体思路是:

扫描指定包中标有@HandlerType的类;

将注解中的类型值作为key,对应的类作为value,保存在Map中;

以上面的map作为构造函数参数,初始化HandlerContext,将其注册到spring容器中;

我们将核心的功能封装在HandlerProcessor类中,完成上面的功能。

HandlerProcessor:

Spring Boot怎么干掉 if else


ClassScaner:扫描工具类源码

HandlerProcessor 需要实现BeanFactoryPostProcessor,在spring处理bean前,将自定义的bean注册到容器中。

核心工作已经完成,现在看看HandlerContext如何获取对应的处理器:

HandlerContext:

Spring Boot怎么干掉 if else

BeanTool:获取bean工具

#getInstance方法根据类型获取对应的class,然后根据class类型获取注册到spring中的bean。

最后请注意一点,HandlerProcessor和BeanTool必须能被扫描到,或者通过@Bean的方式显式的注册,才能在项目启动时发挥作用。

“Spring Boot怎么干掉 if else”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注编程网网站,小编将为大家输出更多高质量的实用文章!

--结束END--

本文标题: Spring Boot怎么干掉 if else

本文链接: https://lsjlt.com/news/296065.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Spring Boot怎么干掉 if else
    本篇内容介绍了“Spring Boot怎么干掉 if else”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!需求这里虚拟一个业务需求,让大家...
    99+
    2023-06-19
  • 怎么干掉if else
    这篇文章主要介绍“怎么干掉if else”,在日常操作中,相信很多人在怎么干掉if else问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么干掉if else”的疑惑有所帮...
    99+
    2024-04-02
  • 怎么彻底干掉代码中的if else
    本篇内容主要讲解“怎么彻底干掉代码中的if else”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么彻底干掉代码中的if else”吧!恶心的 if-else...
    99+
    2024-04-02
  • vue中v-if、v-else-if、v-else怎么用
    这篇文章主要为大家展示了“vue中v-if、v-else-if、v-else怎么用”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“vue中v-if、v-else-...
    99+
    2024-04-02
  • Spring/Spring Boot 中优雅地做参数校验拒绝 if/else 参数校验
    数据的校验的重要性就不用说了,即使在前端对数据进行校验的情况下,我们还是要对传入后端的数据再进行一遍校验,避免用户绕过浏览器直接通过一些 HTTP 工具直接向后端请求一些违法数据。 ...
    99+
    2024-04-02
  • JavaScript的if else语句怎么用
    本篇内容介绍了“JavaScript的if else语句怎么用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成...
    99+
    2024-04-02
  • php中elseif和else if怎么用
    这篇文章主要介绍php中elseif和else if怎么用,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!php是什么语言php,一个嵌套的缩写名称,是英文超级文本预处理语言(PHP:Hypertext Preproc...
    99+
    2023-06-14
  • PHP if...else...elseif语句怎么用
    PHP中的if...else...elseif语句用于根据条件执行不同的代码块。基本语法如下:```phpif (条件1) {// ...
    99+
    2023-10-11
    PHP
  • shell怎么用&&、||简化if else
    这篇文章主要为大家展示了“shell怎么用&&、||简化if else”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“shell怎么用&&...
    99+
    2024-04-02
  • Vue中v-else-if指令怎么用
    这篇文章将为大家详细讲解有关Vue中v-else-if指令怎么用,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。v-else-ifv-else-if 充当 v-if 的 e...
    99+
    2024-04-02
  • 怎么优化if-else代码结构
    本篇内容主要讲解“怎么优化if-else代码结构”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么优化if-else代码结构”吧!需求写一个 returnWee...
    99+
    2024-04-02
  • Scala的IF ELSE语句怎么使用
    这篇文章主要讲解了“Scala的IF ELSE语句怎么使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Scala的IF ELSE语句怎么使用”吧!Scala IF...ELSE 语句是通过...
    99+
    2023-06-19
  • 怎么用状态模式代替if-else
    本篇内容主要讲解“怎么用状态模式代替if-else”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么用状态模式代替if-else”吧!简介状态模式是行为型设计模...
    99+
    2024-04-02
  • C++中的If Else语句怎么使用
    这篇文章主要介绍“C++中的If Else语句怎么使用”,在日常操作中,相信很多人在C++中的If Else语句怎么使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”C++中的If Else语句怎么使用”的疑...
    99+
    2023-06-15
  • php中if…elseif…else判断条件怎么用
    小编给大家分享一下php中if…elseif…else判断条件怎么用,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!php有什么特点1、执行速度快。2、具有很好的开...
    99+
    2023-06-14
  • C语言的if else语句怎么使用
    本篇内容介绍了“C语言的if else语句怎么使用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1、前言(1)C语言是结构化的程序...
    99+
    2023-07-02
  • Spring Boot Admin怎么用
    这篇文章给大家分享的是有关Spring Boot Admin怎么用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。1、介绍官网地址Spring Boot Admin 是开源社区孵化的项目,用于对 Spring Bo...
    99+
    2023-06-25
  • 怎么使用Spring Boot
    本篇内容介绍了“怎么使用Spring Boot”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1. 关闭指定的自动配置通过上面的 @Enabl...
    99+
    2023-06-02
  • Spring Boot中怎么使用Spring MVC
    本篇内容主要讲解“Spring Boot中怎么使用Spring MVC”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Spring Boot中怎么使用Spring&n...
    99+
    2023-07-06
  • 怎么部署Spring-Boot-Devtools
    这篇文章主要介绍“怎么部署Spring-Boot-Devtools”,在日常操作中,相信很多人在怎么部署Spring-Boot-Devtools问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作