前后端交互实例(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.