Springboot中的三层架构
作者:mmseoamin日期:2023-12-18

       

目录

前言

1.Dao(数据访问层/持久层)

2.Service(业务逻辑层)

3.Controller(控制层)

总结:


前言

        我们在进行前后端交互的时候,会分为数据访问,业务逻辑,接受请求并响应数据三个操作,这三部分其实是可以拆分的,让他们解耦,否则代码复用性差并且不易维护,所以诞生了三层架构——1.Dao(数据访问层/持久层)、2.Service(业务逻辑层)、3.Controller(控制层)

         首先我们可以看看,普通的交互代码:

        各部分操作全部糅合在一个类中, 我选中的三个框其实都可以拆分开来 

Springboot中的三层架构,第1张

1.Dao(数据访问层/持久层)

        负责数据访问操作,包括增删改查

         Springboot中的三层架构,第2张

         我们一般用接口来实现,接口在这有以下好处:

        在传统的Java开发中,DAO(Data Access Object)层通常用于封装对数据源(如数据库、文件系统等)的访问操作。使用接口定义DAO层的契约可以带来以下好处:

  1. 抽象和规范:接口定义了DAO层的契约,规定了应该提供哪些数据访问方法和操作。这样可以使代码更加抽象、可扩展和可维护。

  2. 解耦和可替换性:通过面向接口编程,DAO层的实现类与上层业务逻辑层之间可以实现解耦。业务逻辑层只依赖于DAO接口而不关心具体的实现类,这使得在需要更换底层数据源或更换数据访问方式时更加方便。

  3. 可测试性:接口可以提供更好的可测试性。通过使用接口,可以轻松地创建模拟对象或测试替身来进行DAO层的单元测试,而不需要依赖于真实的数据源。

  4. 面向切面编程:通过接口,可以更容易地将事务管理、异常处理等横切关注点应用到DAO层中,提供更好的代码结构和可维护性。

Springboot中的三层架构,第3张

        比如我这里就是解析XML文件,将XML内部数据转化为一个集合并返回。 

         

2.Service(业务逻辑层)

        处理具体的业务逻辑,同样也采用接口的形式,Service层可以通过获取Dao层的数据,对数据内部进行处理,然后再返回,接下来给Controller调用

        Springboot中的三层架构,第4张

比如我这里就是简单对性别gender和job这连个属性进行了修改 ,最后返回集合

3.Controller(控制层)

        接收前端发送的请求,对请求进行处理并响应数据

        Springboot中的三层架构,第5张

这里的Result是 SpringBoot中用到的统一格式的响应对象Result,

属性有1.响应状态Code 2.提示信息msg 3.响应的数据data

                Springboot中的三层架构,第6张

        

总结:

Springboot中的三层架构,第7张

        就如同上头的图片所示,我们在Controller中接受请求 ,调用Service进行逻辑处理,而Service中要调用Dao中的方法获取解析得到的数据,一层一层递进,分工明确,程序复用性大大提高。

         在之后,可以继续融合Spring中IOC&DI技术,把Service和Dao中的类交给IOC管理(在类上加@Component注解),然后Controller中要调用Service对象的时候加入@AutoWired自动装配,依赖注入,同理Service调用Dao对象的时候也加入@AutoWired,IOC会将给类型的bean对象赋值给你使用,这样就不用我们手动创建对象了。

Springboot中的三层架构,第8张

​​​​​​​Springboot中的三层架构,第9张