为什么需要service层的接口?

对于这个问题其实我一直很难想明白,了解过springboot的大部分人应该都试过只是单纯的使用controller层、service层就可以实现后端对数据库的CRUD,但是为什么很多人都会再划分一个dao层出来呢,service层又为什么会分出一个impl包呢,我看完这两篇以后确实是理解了一些,现在我想把这个记录下来供我以后回来看一下:

Service 层的接口是不是多此一举? - 知乎 (zhihu.com)

DAO层和Service层的究极理解--这波我在大气层-优快云博客

接下来我得说说我的理解:

首先,我对dao层存在的意义理解其实就是为了不去影响service层的具体实现,毕竟很多的service层中一个方法可能会包含很多对数据库的操作,如果不使用dao层分开的话,那一个方法中岂不是有几百行代码?不过我们又知道为了使sql语句更好的维护和阅读,我们往往会选择一个方法尽量使用一个sql语句逻辑,这就导致了dao层的诞生了(猜测),这样一来service层的方法就只需要调用很多的dao层方法,从而将sql语句分离出来(解耦),出错的时候你也知道只需要修改那个sql语句就行,而且你可以直接去dao层修改,维护一下就变得简单多了;其次,我一个查询语句也可以多次使用啊,每次用我难道复制粘贴吗,或者说我去调用那个拥有这条sql语句的方法吗?如果没有dao层的话,那service方法还包含其他的sql语句也不好直接就调用这个方法的,所以我想dao层的出现对于代码复用也起到一定的作用。

第二,我对service层的理解,我经常看到的service层方法中总要包含一个包,叫做impl包,为什么会有这个玩意,我刚开始每次都会觉得要这个impl包的话我要接口有个毛用,每次在controller层调用service接口,在impl包的类写一个@Service注解,我寻思直接不要接口了嘛,直接调不快的多,麻烦,而且你每次在controller查询的时候我都是调的接口,所以ctr+左键都是找的service接口,然后又要去impl包找具体实现维护,要是不写接口的话我还可以直接转到具体实现那,直接嘎嘎维护,这不更快吗?现在我个人感觉,在我看完上面那篇文章以后,我突然觉得,假如你有两套方案,比如我第一套方案是做超市管理系统(一),第二套是做超市管理系统(二),但是方案一是用来做活动打折的impl1,方案二是正常不打折的impl2,这样我每次活动的时候,我注释掉impl2的@Service,没有活动的时候我注释掉impl1的@Service启用impl2,然后其他的地方全部都不需要修改,另外就是我需要多实现的话,可以按照文档直接先写好接口,然后再具体实现,这样不会把哪个方法给丢了,好像这样理解的话没有问题,暂时我也没有更好的理解了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

月夜奇术师

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值