前后端交互实例(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(){//数据访问层DaoString file=this.getClass().getClassLoader().getResource("emp.xml").getFile();System.out.println(file);List<Emp>empList=com.yhw.utils.XmlParserUtils.parse(file, Emp.class);//数据处理层ServiceempList.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 {@Overridepublic 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 {@Autowiredprivate EmpDao empDao;@Overridepublic 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 {@Autowiredprivate 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.