【Javaweb】五(Service类)

一般Spring项目中处理业务的层为Service层,称为业务层。
目前常见的风格有:
写法:Service层=Service接口+ServiceImpl实现类
AdminServiceImpl.java(其他同理)
package com.yan.web.service.impl; import com.yan.web.dao.AdminDao;
import com.yan.web.dao.Impl.AdminDaoImpl;
import com.yan.web.entity.AdminEntity;
import com.yan.web.entity.Customer;
import com.yan.web.service.AdminService; import java.util.List; public class AdminServiceImpl implements AdminService {
AdminDao adminDao = new AdminDaoImpl(); @Override
public AdminEntity getAdminByUserName(String userName) {
return adminDao.getAdminByUserName(userName);
} //注册
@Override
public boolean addUser(AdminEntity adminEntity) {
return adminDao.addUser(adminEntity) == 1;
} public List<Customer> adminList(String userName , Integer id) {
return adminDao.adminList(userName,id);
}
public List<Customer> adminList() {
return adminDao.adminList();
} public boolean deleteAdminById(Integer id) {
return adminDao.deleteAdminById(id)==1;
} public boolean updateAdmin(AdminEntity admin) {
return adminDao.updateAdmin(admin)==1;
}
}
Service层的作用
service层属于三层架构中的业务层,业务逻辑是放在Service中的。Service层在业务逻辑不复杂的时候,似乎是没有什么用,但是随着应用迭代业务逻辑变得复杂了之后,这一层是非常有用的。
1、更适合用来处理复杂的业务逻辑,可能会涉及多张表的操作,甚至还混杂着消息投递、接口调用等一系列的复杂综合性事务,这也是我们常说的事务管理所处的层次。
2、对表现层的复用支持,往往我们一个业务逻辑处理,不会单单只应用在一个API接口或页面上,如果直接把这部分内容写到Controller中,那当出现重复操作的时候就会产生复制黏贴,以后再要维护这段逻辑就麻烦了
3、对单元测试的支持,通过单独的一层service实现业务逻辑,那么对于业务逻辑的单元测试会更容易编写,只需要对service来编写就可以了;而web层的单元测试就不需要关注业务本身,只需要关注反馈格式就行了;不然web层就既要考虑业务逻辑的计算,还要考虑web反馈的格式验证,太过复杂。
4、业务逻辑的组装支持,因为Controller中依赖的是Service接口的定义,而具体实现可以有很多种,随着不同的需要可以注入不同的实现,可以比较好的实现多种业务逻辑版本共存。而如果直接把业务逻辑写了Controller,再要替换的时候,就比较麻烦了。
所以,Service层的设计是非常有必要的,这在单体应用的可维护性和可测试性上都占据了非常重要的地位。
service层存在的意义,就是为了方便扩展和维护。
参考链接:https://blog.csdn.net/weixin_47277897/article/details/120728265
【Javaweb】五(Service类)的更多相关文章
- javaweb常用工具类及配置文件备份
Javaweb常用工具类及配置文件备份 做一个代码备份,以后常用到的. hibernate工具类备份 package com.dly.service; /* * hibernate获取sessi ...
- Android基础(五) Service全解析----看不见的Activity
一.服务的介绍: 作为Android四大组件之中的一个,Service(服务)也常常运用于我们的日常使用中,它与Activity的差别在于:Service一直在后台执行.没实用户界面.所以绝不会到前台 ...
- (转)Qt Model/View 学习笔记 (五)——View 类
Qt Model/View 学习笔记 (五) View 类 概念 在model/view架构中,view从model中获得数据项然后显示给用户.数据显示的方式不必与model提供的表示方式相同,可以与 ...
- Neutron中的Service类
Service是OpenStack中非常重要的一个概念,各个服务的组件都以Service类的方式来进行交互. Neutron中的Service类继承自rpc中的Service,总体的继承关系为 neu ...
- Android - 位置定位(Location)服务(Service)类的基本操作
位置定位(Location)服务(Service)类的基本操作 本文地址: http://blog.csdn.net/caroline_wendy 定位服务(Location Service),能够确 ...
- Typescript 学习笔记五:类
中文网:https://www.tslang.cn/ 官网:http://www.typescriptlang.org/ 目录: Typescript 学习笔记一:介绍.安装.编译 Typescrip ...
- Ionic Contoller类与Service类分开需要注意的问题
看了别人的项目把Controller类和Service类都写在了app.js文件里面,这不符合我的风格,想把他们分开成单独的文件,确遇见以下错误提示: ionic.bundle.min.js:133 ...
- Android----获得当前应用包名、当前activity的名字、推断是否是系统桌面、service类
1.获得当前应用包名 public static String getRunningActivityName(Context context) { ActivityManager activityMa ...
- javaweb(五)——Servlet开发(一)
一.Servlet简介 Servlet是sun公司提供的一门用于开发动态web资源的技术. Sun公司在其API中提供了一个servlet接口,用户若想用发一个动态web资源(即开发一个Java程序向 ...
- Jax-ws 开发webService ,并使用spring注入service类
由于使用myeclipse自动生成的Delegate,所以在使用service实现层的时候,默认创建的时候都是使用new的方法: 这样就导致每一次请求过来都得new一个新的:如果service有注入其 ...
随机推荐
- Mybatis-Plus+Nacos+Dubbo进行远程RPC调用保姆级教程
默认你已经看过我之前的教程了,并且拥有上个教程完成的项目, 之前的教程 https://www.cnblogs.com/leafstar/p/17638782.html 1.在bank1的pom文件中 ...
- VScode软件的安装以及C/C++环境配置的方法
今天和大家分享一下VScode软件的安装以及C/C++环境配置的方法.手把手教大家入门. 1,下载VScode编译器 (1) 官网下载链接:https://code.visualstudio.c ...
- 「学习笔记」扩展 KMP(Z 函数)
对于个长度为 \(n\) 的字符串 \(s\).定义 \(z[i]\) 表示 \(s\) 和 \(s[i,n-1]\)(即以 \(s[i]\) 开头的后缀)的最长公共前缀(LCP)的长度.\(z\) ...
- 全免费开源-国内搭建ChatGPT个人镜像站与维护全攻略
本教程收集于:AIGC从入门到精通教程汇总 全免费开源,仅需一个域名就可以部署国内的ChatGPT镜像版本. One-Click to deploy well-designed ChatGPT web ...
- [编程基础] Python内置模块collections使用笔记
collections是Python标准库中的一个内置模块,它提供了一些额外的数据结构类型,用于增强Python基础类型如列表(list).元组(tuple)和字典(dict)等.以下是对collec ...
- 小知识:vi如何使用列编辑模式快速插入
经常需要用到列编辑这种操作,现在很多超文本的编辑器都可以轻松实现. 但有时需要在vi界面直接使用,但是vi的列编辑操作因不常使用总是忘记现查. 这次干脆记录下加深印象. vi编辑某个文本时,比如修改一 ...
- Mac上虚拟环境的安装与使用
Mac上虚拟环境的安装与使用 介绍 virtualenv是python虚拟环境,能够和系统环境相隔离,保持环境的纯净. virtualenvwrapper可以方便管理虚拟环境 安装 pip insta ...
- 关于Async、Await的一些知识点
在ASP.NET Core中,当一个HTTP请求到达服务器时,它会被分配给线程池中的一个线程来处理.该线程会执行相应的Controller方法. 如果这个方法是一个异步方法并且使用了await关键字, ...
- Python基础——函数的理解、函数对象、函数嵌套、闭包函数、及其应用
文章目录 函数也是变量 可以赋值 可以当做函数当做参数传给另外一个函数 可以当做函数当做另外一个函数的返回值 可以当做容器类型的一个元素 函数对象应用示范 原始版 修正版 函数嵌套 函数的嵌套调用 函 ...
- Ubuntu 22.04上安装docker方法及oracle 11g方法
1.切换到管理员登录 ubt2204@ubt2204-Virtual-Machine:~/database$ su Password: 2.执行安装docker命令 root@ubt2204-Virt ...