第四阶段03- 关于Service的编写

本文介绍了Service在项目中的核心作用,强调了Service的规范,特别是方法设计与异常处理。讨论了如何在Service中实现业务逻辑,如添加相册功能,并讲解了自定义异常以增强错误信息的描述性,确保代码的可维护性和一致性。
摘要由CSDN通过智能技术生成

17. 关于Service

17.1. Service的基本作用

Service是项目中非常重要的组件,用于设计业务流程、业务逻辑,以保障数据的完整性、有效性、安全性。

Service在代码中的的作用是调用Mapper、被Controller调用。

17.2. Service的规范

在《阿里巴巴Java手册》中的强制规约:

【强制】对于 Service 和 DAO 类,基于 SOA 的理念,暴露出来的服务一定是接口,内部
的实现类用 Impl 的后缀与接口区别。
正例:CacheServiceImpl 实现 CacheService 接口。

17.3. 关于Service接口中的方法

在Service接口中声明的抽象方法,应该:

  • 返回值类型:仅以操作成功为前提来设计返回值类型
    • 如果视为操作失败,可以通过抛出异常来表示
  • 方法名称:自定义
  • 参数列表:绝大部分情况下,以客户端会提交的请求参数作为参考,并且,可以按需封装,使用封装的POJO类型作为业务方法的参数
封装的类型 login(String username, String password) throws 用户名错误异常, 密码错误异常, 账号状态异常;
try {
   
    封装的类型 xxx = service.login(xx,xx);
    // 处理登录成功的后续操作
} catch (用户名错误异常 e) {
   
    // 处理用户名错误的后续操作
} catch (密码错误异常 e) {
   
    // 处理密码错误的后续操作
} catch (账号状态异常 e) {
   
    // 处理账号状态错误的后续操作
}

17.4. 在Service中实现“添加相册”

在项目的根包下创建pojo.dto.AlbumAddNewDTO类,用于封装业务方法所需的参数:

@Data
public class AlbumAddNewDTO implements Serializable {
   
    private String name;
    private String description;
    private Integer sort;
}

再在项目的根包下创建service.IAlbumService接口,并在接口添加“添加相册”的抽象方法:

public interface IAlbumService {
   
    void addNew(AlbumAddNewDTO albumAddNewDTO);
}

再在项目的根包下创建service.impl.AlbumServiceImpl类,实现以上接口,重写接口中声明的抽象方法:

public class AlbumServiceImpl implements IAlbumService {
   

    @Override
    public void addNew(AlbumAddNewDTO albumAddNewDTO) {
   
    }

}

关于具体的实现,应该是:

@Service
public class AlbumServiceImpl implements IAlbumService {
   
    
    @Autowired
    private AlbumMapper albumMapper;
    
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值