03- 三层架构+分层解耦

03- 三层架构+分层解耦_第1张图片

 

对上一案例的EmpController进行分层解耦

03- 三层架构+分层解耦_第2张图片

 Dao层:数据访问

//接口
public interface EmpDao {
//    获取员工列表数据
    public List listEmp();
}
//实现类
public class EmpDaoA implements EmpDao {
    @Override
    public List listEmp() {
//        1. 加载并解析XML文件
        String file = this.getClass().getClassLoader()
                .getResource("emp.xml").getFile();
//        此时file是emp.xml的磁盘路径
        List empList =  XmlParserUtils.parse(file, Emp.class);
        return empList;
    }
}

Service层,调用Dao层方法,获取数据库数据,返回逻辑处理之后的数据

//接口
public interface EmpService {
//    获取员工列表
    public List listEmp();
}
//实现类
public class EmpServiceA implements EmpService {
    private EmpDao empDao = new EmpDaoA();
    @Override
    public List listEmp() {
//        1.调用Dao,获取数据
        List empList = empDao.listEmp();

        //        2. 对数据进行转换处理
        empList.stream().forEach(emp -> { // 此时是个循环,遍历empList集合
            String gender = emp.getGender();
            if ("1".equals(gender)) emp.setGender("男");
            else if ("2".equals(gender)) emp.setGender("女");

            String job = emp.getJob();
            if ("1".equals(job)) emp.setJob("讲师");
            else if ("2".equals(job)) emp.setJob("班主任");
            else if ("3".equals(job)) emp.setJob("就业指导");
        });
        return empList;
    }
}

Controller层:接收前端请求,返回Service层逻辑处理之后的数据

@RestController
public class EmpController {
    // 定义Service层对象
    private EmpService empService = new EmpServiceA();

    @RequestMapping("/listEmp")
    public Result list() {
//          调用service,获取数据
        List empList = empService.listEmp();

//        3. 响应数据
        return Result.success(empList);
    }
}

分层解耦 

03- 三层架构+分层解耦_第3张图片

IOC&DI 入门

1. Service层及Dao层的实现类,交给IOC容器管理。

        -- 在实现类前加@Component注解:表示将当前类交给IOC容器管理,成为IOC容器中的bean类,bean名称默认为 类名首字母小写后的单词

2. 为Controller及Service注入运行时依赖的对象。

        -- 在定义实现类对象前加@Autowried注解:表示运行时,IOC容器会提供该类的bean对象,并赋值给该对象

3. 运行测试。

03- 三层架构+分层解耦_第4张图片

03- 三层架构+分层解耦_第5张图片

IOC: 

 可以将@Component注解替换成@Service/@Repository

Controller 层中添加@RestController即可,不用再加@Controller注解

03- 三层架构+分层解耦_第6张图片

 DI: 如果存在多个相同类型的bean 

03- 三层架构+分层解耦_第7张图片

 总结:

03- 三层架构+分层解耦_第8张图片

 

  

 

你可能感兴趣的:(SpringBoot入门,JavaWeb,java,spring,spring,boot)