编写业务层要注意的事情

110 阅读2分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 2 月更文挑战」的第 7 天,点击查看活动详情

使用SpringBoot框架的前提下:

 用一个用户登录接口来举例,在业务层首先创建业务层接口IUserService,主要目的是解耦合,也就是减少模块之间的依赖,增加程序的独立性。然后来设计业务层的抽象方法:

public inerface IUserService{
    void Register();
}

 业务层接口的方法如何设计呢?

1)返回值:设计返回值时直接假定方法成功调用时返回的值类型,不需要考虑调用失败,因为可以直接在业务层抛出异常。

2)参数列表:参数的设计要同时考虑到controller层和mapper层,要考虑用户会通过controller层传来什么参数和向数据库的操作需要什么参数。

3)异常处理:在业务层要规划业务中会出现的异常,然后在业务层抛出异常,使用抛出异常的方式来表示操作失败。

package com.cy.store.service.impl;
import com.cy.store.entity.User;
import com.cy.store.mapper.UserMapper;
import com.cy.store.service.IUserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
​
/** 处理用户数据的业务层实现类 */
@Service
public class UserServiceImpl implements IUserService {
    @Autowired
    private UserMapper userMapper;
​
    @Override
    public void reg(User user) {
        // TODO
    }
}

 创建抽象接口完成后就是来实现抽象方法,在实现类前需要添加@Service注解。因为业务层是依赖mapper层实现的,所以还需要导入mapper层对象,使用@Autowired注解来自动注入一个Mapper层对象调用其方法。

 实现的步骤大致是分析业务功能、创建要返回的对象、调用持久层方法、抛异常、return数据。

 在编写完业务层方法后就可以在测试类里测试一下了,可以单独创建service层的测试类,注意添加@RunWith(SpringRunner.class)和@SpringBootTests注解,并使用@Autowired自动注入所依赖的service层对象,测试方法前要使用@Test注解,测试方法要以public void开头。