目录
前言
1.Dao(数据访问层/持久层)
2.Service(业务逻辑层)
3.Controller(控制层)
总结:
前言
我们在进行前后端交互的时候,会分为数据访问,业务逻辑,接受请求并响应数据三个操作,这三部分其实是可以拆分的,让他们解耦,否则代码复用性差并且不易维护,所以诞生了三层架构——1.Dao(数据访问层/持久层)、2.Service(业务逻辑层)、3.Controller(控制层)
首先我们可以看看,普通的交互代码:
各部分操作全部糅合在一个类中, 我选中的三个框其实都可以拆分开来
1.Dao(数据访问层/持久层)
负责数据访问操作,包括增删改查
我们一般用接口来实现,接口在这有以下好处:
在传统的Java开发中,DAO(Data Access Object)层通常用于封装对数据源(如数据库、文件系统等)的访问操作。使用接口定义DAO层的契约可以带来以下好处:
-
抽象和规范:接口定义了DAO层的契约,规定了应该提供哪些数据访问方法和操作。这样可以使代码更加抽象、可扩展和可维护。
-
解耦和可替换性:通过面向接口编程,DAO层的实现类与上层业务逻辑层之间可以实现解耦。业务逻辑层只依赖于DAO接口而不关心具体的实现类,这使得在需要更换底层数据源或更换数据访问方式时更加方便。
-
可测试性:接口可以提供更好的可测试性。通过使用接口,可以轻松地创建模拟对象或测试替身来进行DAO层的单元测试,而不需要依赖于真实的数据源。
-
面向切面编程:通过接口,可以更容易地将事务管理、异常处理等横切关注点应用到DAO层中,提供更好的代码结构和可维护性。
比如我这里就是解析XML文件,将XML内部数据转化为一个集合并返回。
2.Service(业务逻辑层)
处理具体的业务逻辑,同样也采用接口的形式,Service层可以通过获取Dao层的数据,对数据内部进行处理,然后再返回,接下来给Controller调用
比如我这里就是简单对性别gender和job这连个属性进行了修改 ,最后返回集合
3.Controller(控制层)
接收前端发送的请求,对请求进行处理并响应数据
这里的Result是 SpringBoot中用到的统一格式的响应对象Result,
属性有1.响应状态Code 2.提示信息msg 3.响应的数据data
总结:
就如同上头的图片所示,我们在Controller中接受请求 ,调用Service进行逻辑处理,而Service中要调用Dao中的方法获取解析得到的数据,一层一层递进,分工明确,程序复用性大大提高。
在之后,可以继续融合Spring中IOC&DI技术,把Service和Dao中的类交给IOC管理(在类上加@Component注解),然后Controller中要调用Service对象的时候加入@AutoWired自动装配,依赖注入,同理Service调用Dao对象的时候也加入@AutoWired,IOC会将给类型的bean对象赋值给你使用,这样就不用我们手动创建对象了。