【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有注入其 ...
随机推荐
- JavaScript中单例模式这样用
如果希望自己的代码更优雅.可维护性更高以及更简洁,往往离不开设计模式这一解决方案. 在JS设计模式中,最核心的思想:封装变化(将变与不变分离,确保变化的部分灵活,不变的部分稳定). 单例模式 那么来说 ...
- 【pandas小技巧】--缺失值的列
在实际应用中,数据集中经常会存在缺失值,也就是某些数据项的值并未填充或者填充不完整.缺失值的存在可能会对后续的数据分析和建模产生影响,因此需要进行处理. pandas提供了多种方法来处理缺失值,例如删 ...
- 桌面应用打包:pyinstaller
1 背景 在使用python开发一些小工具时,如果其他人电脑中没有python环境或者没有安装相应的第三方库,是没办法运行的,而要求对方安装又不现实,尤其是对方不是技术人员,因此如何将一个独立的pyt ...
- 概率dp_C++详解
引入 概率 DP 用于解决概率问题与期望问题,建议先对概率和期望的内容有一定了解.一般情况下,解决概率问题需要顺序循环,而解决期望问题使用逆序循环,如果定义的状态转移方程存在后效性问题,还需要用到 高 ...
- maven系列:简介和安装配置(Mac、Linux、Windows、settings.xml、IDEA配置)
目录 一.简介 二.安装 三.配置 Mac配置 Centos配置 Window配置 settings.xml配置 IDEA配置 一.简介 官网:https://maven.apache.org mav ...
- 使用 docker 打包构建部署 Vue 项目,一劳永逸解决node-sass安装问题
文章源于 Jenkins 构建 Vue 项目失败,然后就把 node_modules 删了重新构建发现 node-sass 安装不上了,折腾一天终于可以稳定构建了. 犹记得从学 node 的第一天,就 ...
- 完美解决Content type ‘multipart/form-data;boundary=----------0467042;charset=UTF-8‘ not supported问题
一.前言 今天在做文件上传功能出现了该问题,该接口如下: @PostMapping("/upload") public Boolean upload(@RequestParam ...
- Flink-读Kafka写Hive表
1. 目标 使用Flink读取Kafka数据并实时写入Hive表. 2. 环境配置 EMR环境:Hadoop 3.3.3, Hive 3.1.3, Flink 1.16.0 根据官网描述: htt ...
- pythonapi接口怎么对接?
Python API接口对接是使用Python语言开发应用程序时,与外部API接口进行交互的一种方式.API(应用程序接口)是一种定义了程序或系统如何与另一个程序或系统进行交互的协议.通过使用Py ...
- springboot3框架搭建
Spring Boot 3.0.0已经发布一段时间了,越来越多的公司考虑将技术框架升级到最新版本,JDK也相应要求JDK17以上.对应Spring Boot 2.x的版本,建议先升级到Spring B ...