网站备案与所在地,建设网站审批手续,做微商有什么好的货源网站,wordpress静态加速本篇主要对ControllerServiceDAO三层结构以及控制反转#xff08;IOC#xff09;与DI#xff08;依赖注入#xff09;进行总结。 目录
一、三层架构#xff1a;
Controller/Service/DAO简介#xff1a;
二、控制反转(IOC)-依赖注入(DI):
概念介绍#xff1a; DOC与… 本篇主要对ControllerServiceDAO三层结构以及控制反转IOC与DI依赖注入进行总结。 目录
一、三层架构
Controller/Service/DAO简介
二、控制反转(IOC)-依赖注入(DI):
概念介绍 DOC与DI的引入
使用注解来实现IOC与DI 一、三层架构 前言 如果将代码都写到一个类中包括数据访问解析xml文件逻辑处理接收请求响应数据等功能这种方式会导致代码非常臃肿复用性差并且难以维护实际开发中尽量保持单一职责原则所以要分开进行操作由此引出三层架构ControllerServiceDAO Controller/Service/DAO简介 Controller控制层接收前端发送的请求对请求进行处理并响应数据。Service业务逻辑层处理具体的业务逻辑。DAO数据访问层Data Access Object持久层负责数据访问操作包括对数据的增删改查等。 整体的流程如下 首先客户端发送请求到Controller层Controller接收请求后调用Service层进行逻辑处理Service层需要获取数据所以调用DAO层获取数据DAO返回数据后Service层进行逻辑处理返回处理后的数据到Controller层Controller层响应数据到前端界面这就是三层架构 二、控制反转(IOC)-依赖注入(DI):
概念介绍 先对下面提到的几个概念进行简单的介绍 内聚软件中各个功能模块内部的功能联系。耦合衡量软件中各个层或模块之间的依赖、关联程度。软件设计原则高内聚低耦合。控制反转Inversion Of Control简称IOC对象的创建控制权由程序自身转移到外部容器这种思想就叫做控制反转。依赖注入Dependency Injection简称DI容器为应用程序提供运行时所依赖的资源称之为依赖注入。Bean对象IOC容器中创建、管理的对象称之为Bean对象。 DOC与DI的引入 前面讲了三层架构如果按照这样的流程来接收前端发送的请求并处理请求就需要在各个层中定义相应的对象比如说Controller层调用Service层的方法来获取数据此时Controller层需要new一个Service对象所以他们两个耦合程度比较高如果Service换了名字Controller层也要改变所以这种方式有很大的缺陷同样Service和DAO层也一样的情况 所谓高内聚例如service层只对客户这种类型数据进行处理不对其他类型进行处理实际开发中软件设计原则是高内聚低耦合这样当Service代码变化不需要改变Controller层的代码 所以为了解决这种缺陷实现解耦操作在各个层中不用通过new来创建类的对象可以采用一个容器这个容器中存放对应的对象如果Service层中叫做ServiceA那么此时容器中存放一个ServiceA类型的对象然后Controller层去容器中寻找这个对象然后从容器中拿到这个对象然后调用相应的方法。如果Service层的名称改为ServiceB此时就在容器中存放一个ServiceB的对象然后Controller层去寻找即可无需更改Controller层的代码。那么如何实现这个容器——通过IOC与DI来实现。 使用注解来实现IOC与DI
控制反转IOC首先一般用下面三种注解实现控制反转如果有一个不属于那三类可以用Component。利用注解来修饰类将这个类的对象控制权交给IOC容器管理。 依赖注入DI如果想在Controller层中使用Service层的对象需要在创建的对象前面加上Autowired注解
演示如下
Controller层通过Autowired注解实现依赖注入获取IOC容器中Service层的对象
RestController
public class DeptController {Autowiredprivate DeptService deptService;
Service层通过Service注解实现将Service类的对象创建与管理交给IOC容器这样Controller层就可以从IOC容器中获取此类对象。通过Autowired注解实现依赖注入获取IOC容器中DAO层的对象
Service
public class DeptLogServiceImpl implements DeptLogService {Autowiredprivate DeptLogMapper deptLogMapper;DAO层注意此处一般使用Mapper注解这个注解是mabitas提供的后续会讲到上面的Controller注解等是springboot提供的功能本质上一致。通过加入Mapper注解将DAO层的对象创建与管理交给IOC容器这样Service层就可以从IOC容器中获取此类对象。
Mapper
public interface DeptLogMapper {
通过以上注解即可实现控制反转与依赖注入。