【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

posted @ 2022-11-14 22:25  喝着农药吐泡泡o  阅读(365)  评论(0编辑  收藏  举报