经常遇到这样的一个需求,前端传的实体类型相同,后端需要根据实体类中的某一个字符串,动态地调用某一个类的方法。
在springboot中,我们可以理解成,一个controller接口对应多个rviceimpl,使用这种方式,如果后期需要添加一个功能,仅仅创建一个rviceimpl就可以满足需求,而不用再额外创建一个controller接口。
现在假设一个情景,前端传入不同的用户类型,后端返回该用户的任务。
你可能问我,为什么不直接把(用户类型,用户任务)存入数据库?
现在只是一个简单的场景而已,实际中更为复杂,无法直接存入数据库。
我们先定义一个接口
两个实现类
实现动态调用的核心类
spring会自动地将形如(@rvice后面的名称,实现该接口的类)注入到该urmap中
在启动后,urmap中就存在两个元素,(“student”,studentrviceimpl)与(“teacher”,teacherrviceimpl)
滨江长廊geturrvice方法返回urmap中key=type的urrvice对象
实体类
controller层接口
测试样例:
关于库存的仪表盘统计
前端传入区域id,仓库id,物品id等信息
后端依据参数动态地选送平安择某一个物品实现类,最后返回统计的信息。
这里有几个问题,为什么不一次性将所有物品id传入,一次性获取所有物品的库存?
一次性传入,可能后端处理时间边长,失败率也高,一旦失败,整个仪表盘没有任何数据。而且后期可能面临的一个需求,不同的物品,需要有不同的接口刷新速度,畅销的物品接口调用频率快。所以可能需要将物品分组,清华北大哪个好一个小组是同一种类型,使用一个实现类。
比如,这里有100种物品,按类型或丁义珍原型者其他属性分成了10组,每个组之间,有一个不同的属性groupid,但10组共用一个接口,进入接口后,再进入10个不同的实现类,在实现类中调用具体的计算逻辑。
在spring中当一个接口有多个实现类的时候,通过创建简单工厂类,根据传入的不同的参数获取不同的接口实现类。
以上为个人经五环代表什么验,希望能给大家一个参考,也希望大家多多支持www.887551.com。
本文发布于:2023-04-05 22:15:29,感谢您对本站的认可!
本文链接:https://www.wtabcd.cn/fanwen/zuowen/71c6aa083949b84f415946ccec73641c.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文word下载地址:springboot如何通过不同的策略动态调用不同的实现类.doc
本文 PDF 下载地址:springboot如何通过不同的策略动态调用不同的实现类.pdf
留言与评论(共有 0 条评论) |