当前位置: 首页 > news >正文

php网站迁移东莞网红打卡旅游景点

php网站迁移,东莞网红打卡旅游景点,制作微网站多少钱,wordpress站点主页目录 一、IOC&DI入门 二、三层架构 数据库访问层 业务逻辑层 控制层 一、IOC&DI入门 在软件开发中,IOC(Inversion of Control)和DI(Dependency Injection)是密切相关的概念。 IOC(控制反转&a…

目录

一、IOC&DI入门

二、三层架构 

数据库访问层

业务逻辑层

控制层


一、IOC&DI入门

在软件开发中,IOC(Inversion of Control)和DI(Dependency Injection)是密切相关的概念。

  1. IOC(控制反转): IOC是一种设计原则,通过它可以实现程序的松耦合。传统的控制流程是由程序员直接编写代码控制对象的创建和调用关系,而控制反转则是将这种控制权交给一个容器(例如,IOC容器)来管理。换句话说,控制反转就是控制权的转移,由程序员转移到容器中,容器负责创建对象并管理对象之间的依赖关系。

  2. DI(依赖注入): DI是实现IOC的一种具体方式。它是指在对象创建的过程中,通过将对象所依赖的其他对象(即依赖关系)注入到对象中,从而实现对象之间的解耦。这样,对象不再负责自己的依赖关系,而是由外部容器在创建对象时提供所需的依赖。

    依赖注入可以通过构造函数注入、属性注入或方法注入等方式来实现。其中最常见的是构造函数注入,在这种方式下,对象在创建时必须提供其所需的依赖,否则无法正确实例化对象。

综合起来说,IOC是一种设计原则,DI是实现IOC的具体技术手段。通过DI,我们可以在应用程序中实现控制反转,让对象之间的依赖关系由容器来管理,从而提高代码的可维护性、可测试性和灵活性。

要把某个对象交给IOC容器管理,需要在对应的类上加上如下注解之一:

注解说明位置
@Controller@Component的衍生注解标注在控制器类上
@Service@Component的衍生注解标注在业务类上
@Repository@Component的衍生注解标注在数据访问类上(由于与mybatis整合,用的少)
@Component声明bean的基础注解不属于以上三类时,用此注解

@Autowired注解,默认是按照类型进行自动装配的(去IOC容器中找某个类型的对象,然后完成注入操作)

入门程序举例:在EmpController运行的时候,就要到IOC容器当中去查找EmpService这个类型的对象,而我们的IOC容器中刚好有一个EmpService这个类型的对象,所以就找到了这个类型的对象完成注入操作。

二、三层架构 

那其实我们上述案例的处理逻辑呢,从组成上看可以分为三个部分:

  • 数据访问:负责业务数据的维护操作,包括增、删、改、查等操作。

  • 逻辑处理:负责业务逻辑处理的代码。

  • 请求处理、响应数据:负责,接收页面的请求,给页面响应数据。

按照上述的三个组成部分,在我们项目开发中呢,可以将代码分为三层:

  • Controller:控制层。接收前端发送的请求,对请求进行处理,并响应数据。

  • Service:业务逻辑层。处理具体的业务逻辑。

  • Dao:数据访问层(Data Access Object),也称为持久层。负责数据访问操作,包括数据的增、删、改、查。

基于三层架构的程序执行流程:  

  • 前端发起的请求,由Controller层接收(Controller响应数据给前端)

  • Controller层调用Service层来进行逻辑处理(Service层处理完后,把处理结果返回给Controller层)

  • Serivce层调用Dao层(逻辑处理过程中需要用到的一些数据要从Dao层获取)

  • Dao层操作文件中的数据(Dao拿到的数据会返回给Service层)

 

代码实现:

数据库访问层

public interface EmpDao {public List<Emp>  listEmp();}
@Repository  // 将当前对象交给IOC容器管理,成为IOC容器的bean
public class EmpDaoA implements EmpDao {@Overridepublic List<Emp> listEmp() {// 1、加载并解析xml文件
//        String file = this.getClass().getClassLoader().getResource("emp.xml").getFile();String file = "XXXXXXXXXXXXx";System.out.println(file); // 输出路径List<Emp> empList = XmlParserUtils.parse(file, Emp.class);return empList;}}

业务逻辑层

// 业务逻辑层
public interface EmpService {public List<Emp> listEmp();}

@Primary // 使用@Primary注解:当存在多个相同类型的Bean注入时,加上@Primary注解,来确定默认的实现。
@Service
public class EmpServiceA implements EmpService {// 创建数据库访问层对象@Autowiredprivate EmpDao empDao;@Overridepublic List<Emp> listEmp() {List<Emp> empList = empDao.listEmp();// 2、对数据转化处理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;}}

控制层


@RestController
public class EmpController {// 创建业务对象// 运行时,从IOC容器中获取该类型对象,赋值给该变量@Autowiredprivate EmpService  empService;@RequestMapping("listEmp")public Result list(){List<Emp> empList = empService.listEmp();// 3、响应数据return Result.success(empList);}}

三层架构的优点:

  1. 复用性强

  2. 便于维护

  3. 利用扩展

  4. 解决了耦合问题

首先需要了解软件开发涉及到的两个概念:内聚和耦合。

  • 内聚:软件中各个功能模块内部的功能联系。

  • 耦合:衡量软件中各个层/模块之间的依赖、关联的程度。

软件设计原则:高内聚低耦合。

高内聚指的是:一个模块中各个元素之间的联系的紧密程度,如果各个元素(语句、程序段)之间的联系程度越高,则内聚性越高,即 "高内聚"。

低耦合指的是:软件中各个层、模块之间的依赖关联程序越低越好。

http://www.yayakq.cn/news/614408/

相关文章:

  • 做两个单页面网站大概多少钱云电脑平台哪个最好
  • 淘宝客如何做自己的网站photoshop快捷键命令大全
  • 建立网站一般那些阶段安徽省建设安全协会网站
  • 培训会网站建设云教育科技网站建设
  • 网站建设 亿安网络网站如何改字体
  • 什么网站上做推广效果比较好常见的网络营销方法及其效果
  • 中山微网站建设多少钱站群管理
  • 永嘉网站制作视频网站直播怎么做的
  • 福建省漳州市建设局网站吉林智能网站建设企业
  • 视觉做的比较好的国外网站网站优化升级怎么做
  • 网站建站企业制作外贸型网站
  • 网站建设合同书样本网站维护得多久
  • 高端网站设计上海网站建设上海网站的版式设计
  • 阿里巴巴国际站工作怎么样新乡手机网站建设官网
  • 好用的在线地图网站uo建设网站
  • 速成美站聊城网站建设的地方
  • 科技网站新版网站上线怎么做流量网站
  • 什么叫做网站维护贵州有网站的企业
  • hltm 做网站教程360指数查询工具
  • 宁城县建设局网站深圳城乡和住房建设局网站首页
  • ugc网站开发北京app制作哪家好
  • 介绍小说的网站模板下载地址中小型教育网站的开发与建设
  • 郑州企业网站排名优化哪家好WordPress超级链接不跳转
  • 有域名了如何自己做网站网站建设 需求分析报告
  • 德国和俄罗斯和做视频网站辽宁省建设行业协会网站
  • 网站建设栏目内容如何装修公司网站
  • 手机网站要域名吗桂林网络平台开发公司
  • 公司建设网站计入什么分录微信sdk
  • php做的网站怎么上传wordpress产品插件
  • 江宁城乡建设局网站广州4a广告公司名单