创建service目录,并创建EmpService接口,再创建一个实现类empServiceA用来实现逻辑处理
public interface EmpService {
List<Emp> listEmp();
//获取员工列表数据
}
public class EmpServiceA implements EmpService {
//对数据进行访问 调用dao 创建dao对象
private EmpDao empDao = new EmpDaoA();
@Override
public List<Emp> listEmp() {
//调用dao获取数据
List<Emp> empList= empDao.listEmp();
//对数据进行转换处理 逻辑处理
empList.stream().forEach(emp ->{
//处理gender
String gender =emp.getGender();
if("1".equals(gender)){
emp.setGender("男");
}else if("2".equals(gender)){
emp.setGender("女");
}
//处理job
// <!-- 1: 讲师, 2: 班主任 , 3: 就业指导 -->
String job=emp.getJob();
if("1".equals(job)){
emp.setGender("讲师");
}else if("2".equals(job)){
emp.setGender("班主任");
} else if ("3".equals(job)) {
emp.setJob("就业指导");
}
} );
return empList;
}
}
创建Dao层 创建一个接口empDao 用来获取员工数据
public interface EmpDao {
//获取员工数据
public List<Emp> listEmp();
}
创建dao的实现类EmpDaoA 进行数据访问
public class EmpDaoA implements EmpDao {
@Override
public List<Emp> listEmp() {
//加载并解析完成emp.xml文件 根据classloader动态加载路径
String file =this.getClass().getClassLoader().getResource("emp.xml").getFile();
// 把文件输出到控制台
System.out.println(file);
List<Emp> empList= XmlParserUtils.parse(file, Emp.class);
return empList;
}
}
再在EmpController层进行数据请求和响应并创建service对象并new了一个service实现类,使之耦合
@RestController
public class Empcontroller {
//创建service对象
private EmpService empService=new EmpServiceA();
@RequestMapping("/listEmp")
public Result list(){
//调用service数据
List<Emp> empList=empService.listEmp();
// 接收请求 相应数据响应数据
return Result.success(empList);
}
}
消除耦合 采用控制反转(IOC)和依赖注入(DI)
控制反转(Inversion Control)IOC 对象的创建控制权由程序自身转移到外部(容器)这种思想被称为控制反转
依赖注入(Depenency Injection)DL 容器为应用程序提供运行时,所依赖的资源,称之为依赖注入
Bean对象 IOC容器中创建,管理的对象,称之为Bean
采用@Component注解,表示把当前类交给IOC容器管理,成为IOC容器的bean
并采用@Autowired注入依赖,在程序运行时IOC容器会提供该类型的bean对象,并赋值给该变量
1 service层及dao层的实现类,交给IOC容器管理
2 为Controller及service注入运行时,依赖的对象
3 运行测试