改进前后端交互实例

前后端交互实例(javaweb05)-CSDN博客

在这之前我假设大家都已经学完了IOC和DI

不明白的这里我也解释一下,首先是两个概念

1.控制反转:对象的创建控制权由程序自身转到外部(容器)

2.依赖注入:容器为程序提供运行时所依赖的资源

Bean对象:IOC容器中创建,关联的对象,称之为bean
 

这是上一篇文章的前后端交互里面有一个EmpController代码,在新的一节内容中,我们知道可以将它分成更加结构分明的几部分.

1.Dao数据访问层

2.Service逻辑处理层

3.Controller进行前后端的数据交互

@RestController
public class EmpController {
    @RequestMapping("/listEmp")
    public Result list(){
        //数据访问层Dao
        String file=this.getClass().getClassLoader().getResource("emp.xml").getFile();
        System.out.println(file);
        List<Emp>empList=com.yhw.utils.XmlParserUtils.parse(file, Emp.class);

        //数据处理层Service
        empList.stream().forEach(emp -> {
            //处理男和女
            String gender=emp.getGender();
            if("1".equals(gender)){
                emp.setGender("男");
            }else{
                emp.setGender("女");
            }
            String job=emp.getJob();
            if("1".equals(job)){
                emp.setJob("讲师");
            }else if("2".equals(job)){
                emp.setJob("班主任");
            }else{
                emp.setJob("就业指导");
            }
        });


        //下面这一层的是数据交互
        return Result.success(empList);
    }
}

这是上一小结的代码,我们要把它分成三个结构

那么我们现在可以先建两个包

一个dao包和service包,包括一个接口和impl包里的实现 

首先来实现EmpDao

1.EmpDao接口

public interface EmpDao {
    public List<Emp>listEmp();
}

2.EmpDao实现,这里我只写一个A实现,其它它可以有很多实现

@Component
public class EmpDaoA implements EmpDao {
    @Override
    public List<Emp> listEmp(){
        String file=this.getClass().getClassLoader().getResource("emp.xml").getFile();
        System.out.println(file);
        List<Emp> empList=com.yhw.utils.XmlParserUtils.parse(file, Emp.class);
        return empList;
    }
}

@Component表示把他放入IOC容器中

接下来实现Servce

1.Service接口

public interface EmpService {
    public List<Emp> listEmp();
}

2.实现

import java.util.List;
@Component
public class EmpServiceA implements EmpService {
    @Autowired
    private EmpDao empDao;
    @Override
    public List<Emp>listEmp(){
        List<Emp>empList=empDao.listEmp();
        empList.stream().forEach(emp -> {
            //处理男和女
            String gender=emp.getGender();
            if("1".equals(gender)){
                emp.setGender("男");
            }else{
                emp.setGender("女");
            }
            String job=emp.getJob();
            if("1".equals(job)){
                emp.setJob("讲师");
            }else if("2".equals(job)){
                emp.setJob("班主任");
            }else{
                emp.setJob("就业指导");
            }
        });
        return empList;
    }
}

@Autowired表示将当前IOC容器中的EmpDao实现自动注入到其中

接下来完善Controller

@RestController
public class EmpController {
    @Autowired
    private EmpService empService;
    @RequestMapping("/listEmp")
    public Result list(){
        //加载并解析XML文件
        //类->类加载器->找到类路径下的emp.xml->获取文件路径
        List<Emp> empList=empService.listEmp();

        //调用result方法
        return Result.success(empList);
    }
}

我们将原先的Dao层和Service层的对象删除,然后自行选择装配的Dao和Service组件,最后装配到Controller.

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值