Spring Service功能有什么作用


本文小编为大家详细介绍“SpringService功能有什么作用”,内容详细,步骤清晰,细节处理妥当,希望这篇“SpringService功能有什么作用”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。项目的核心组成部分图解:Service是项目中用于处理业务逻辑的,因为每种数据在做某种操作时,应该都有某些规则:例如用户尝试登录时,涉及的规则可能包含:用户名对应的用户信息必须存在、提交的密码必须与数据库中存储的密码是匹配的……例如用户尝试修改密码时,涉及的规则可能包含:当前用户账号必须存在且处于正常状态、提交的原密码必须与数据库中存储的密码是匹配的……例如用户尝试注册时,涉及的规则可能包含:提交的用户名必须在数据库不存在,提交的手机号码必须在数据库中不存在,提交的电子邮箱必须在数据库中不存在……这些规则是用于保障数据的有效性、安全性的,使得数据可以随着我们设定的规则而产生或发生变化!在项目中,关于Service的开发,通常是先定义接口,再定义类实现此接口,接口名通常使用“数据类型Service”这样格式的名称,而实现类通常是在接口名的基础上再添加Impl后缀。在《阿里巴巴Java开发手册》中的规约:【强制】对于 Service 和 DAO 类,基于 SOA 的理念,暴露出来的服务一定是接口,内部 的实现类用 Impl 的后缀与接口区别。则在项目的根包下创建service.IAlbumService接口:然后,在根包下创建service.impl.AlbumServiceImpl类,此类需要实现以上的IAlbumService接口:文件结构如下图所示:然后,需要在接口中设计“添加相册”的抽象方法:xx xx(xx);关于抽象方法的名称:可以完全自定义,当前业务是“添加相册”,可以使用addNewadd等。关于抽象方法的参数列表:大多参数是由客户端提交到控制器,再由控制器调用时传递过来的参数,另外,也可能是控制器处理出来的某些数据(例如Session中的当前登录用户信息),本次的参数应该包含:相册名称、相册简介、相册的排序序号,可以将这3个数据封装到自定义的DTO类中,并使用DTO类型作为参数。关于抽象方法的返回值类型:仅以操作成功为前提来设计返回值类型,如果操作失败,将抛出异常。在项目的根包下创建pojo.dto.AlbumAddNewDTO类:并在IAlbumService接口中添加抽象方法:然后,在AlbumServiceImpl中实现此抽象方法:初步实现为:完成后,在src/test/java下的根包下创建service.AlbumServiceTests测试类,并在类中编写、执行测试方法:在具体实现过程中,还应该保证此次尝试添加的相册的名称是唯一的!可以通过查询数据库来得知尝试添加的相册的名称是否已经被使用,需要执行的SQL语句可以是:可以选择使用以上第2种查询来检验相册名称是否已经被使用,则应该在AlbumMapper.java接口中添加:并在AlbumMapper.xml中配置SQL:完成后,应该在AlbumMapperTests.java中编写并执行测试:接下来,可以在Service的实现过程中进行检查,例如:提示:以上代码中,由于满足if条件时将抛出异常,所以,可以不必使用else,并且,在后续的编程中,当需要执行某些判断时,应该优先根据“抛出异常”或“终止当前方法的执行”来设计if的条件!即:if (count > 0) {// 相册名称已经被使用,将不允许添加此相册,应该抛出异常 }// 相册名称没有被使用,可以将此相册数据插入到数据库中具体实现为:为了避免测试时因为相册名称冲突出现异常而导致测试失败,应该在测试时捕获所抛出的异常,例如:关于以上实现过程中抛出的异常,使用的是RuntimeException,是不合适的!因为程序出现RuntimeException的原因有很多,例如空指针异常、数组下标越界异常、类型转换异常,都属于RuntimeException,如果“相册名称被占用”时抛出RuntimeException,则此方法的调用者很难区分出现异常的真正原因!通常,建议自定义异常,并且,当视为失败时,抛出此自定义异常的对象!则在根包下创建ex.ServiceException类,继承自RuntimeException:提示:本次自定义的异常应该继承自RuntimeException。然后,在AlbumServiceImpl中添加相册时,如果相册名称被使用,则抛出ServiceException类型的异常:并且,在测试中,捕获的异常也改为ServiceException:读到这里,这篇“SpringService功能有什么作用”文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自免费云主机域名己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注百云主机行业资讯频道。

相关推荐: C++变量存储的生命周期与作用域怎么应用

这篇文章主要介绍“C++变量存储的生命周期与作用域怎么应用”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“C++变量存储的生命周期与作用域怎么应用”文章能帮助大家解决问题。auto类型:非静态的局部变量存储类型都是aut…

免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。

Like (0)
Donate 微信扫一扫 微信扫一扫
Previous 02/26 18:58
Next 02/26 18:59

相关推荐