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

(javaweb)分层解耦

目录

一.三层架构

二.分层解耦

三.IOC&DI入门

四.IOC详解

五. DI详解


 

一.三层架构

复用性差,难以维护和管理 

前端发起请求,先会到达controller,再调用service进行逻辑处理,逻辑处理的前提是先拿到数据,到dao层,再去操作文件中的数据。将数据拿到,再返回给service,service进行逻辑处理,返回给controller进行响应数据给前端。

package com.itheima.controller;import com.itheima.Util.XmlParserUtils;
import com.itheima.pojo.Emp;
import com.itheima.pojo.Result;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;import java.util.List;@RestController
public class Empcontroller {@RequestMapping("/listEmp")public Result list(){//加载并解析emp.xml  并且封装到集合当中    dao层String file=this.getClass().getClassLoader().getResource("emp.xml").getFile();System.out.println(file);List<Emp> empList = XmlParserUtils.parse(file, Emp.class);//对数据进行转换处理   service层//1.处理genderempList.stream().forEach(emp -> {String gender=emp.getGender();if("1".equals(gender)){emp.setGender("男");} else if ("2".equals(gender)) {emp.setGender("女");}//2.处理jobString job=emp.getJob();if ("1".equals(job)){emp.setJob("讲师");}else if ("2".equals(job)){emp.setJob("班主任");} else if ("3".equals(job)) {emp.setJob("就业指导");}});//3.响应数据   controller层return Result.success(empList);}
}

先定义dao的接口,增强程序的灵活性和拓展性

 

三层架构:便于维护 方便架构 复用性强

二.分层解耦

 解耦:解除耦合

高内聚:将自己相关的内容放一块,无关的不写    依赖程度越高,耦合程度越高

设置controller要创建service类---耦合了

设计原则:高内聚低耦合(高内聚:模块内部之间的功能越紧密越好 低耦合:尽可能去降低模块与模块之间,层与层之间的关联)最好能做到解除耦合:层与层之间没有依赖(灵活性可扩展性提高)

 容器:IOC容器或者叫spring容器

容器中创建的对象:bean对象

三.IOC&DI入门

1.将new出的对象删除--空指针异常

IOC与DI共同完成业务解耦操作

控制反转:

依赖注入: 

四.IOC详解

 IOC控制反转--将对象的使用权交给ioc容器,由ioc容器创建和管理这些对象

@Conponent--声明bean对象----------衍生出三个注解

在项目开发当中,某一个类不能规整到那三层里面,若还想将类交给ioc容器管理,就使用conponent注解

value属性来声明bean的名字-------首字母小写--bean的名字

是默认的bean的名字

一般不用指定 采用默认的名字即可

五. DI详解

ioc容器要为应用程序提供运行时所依赖的资源  资源--就是对象

primary--让当前的bean生效

​​​​​​​

 

http://www.lryc.cn/news/423554.html

相关文章:

  • 2024华为数通HCIP-datacom最新题库(H12-831变题更新⑨)
  • PCIe学习笔记(21)
  • 分享Embedding 模型微调的实现
  • TED: 1靶场复现【附代码】(权限提升)
  • Python(TensorFlow)衍射光学层卷积算法模拟(英伟达GPU)
  • iOS开发进阶(二十二):Xcode* 离线安装 iOS Simulator
  • Prostgresql的Timescaledb插件/扩展部署
  • 分布式知识总结(一致性Hash算法)
  • 图数据库在社交网络分析中的应用
  • Git基础使用教程
  • 技术速递|Python in Visual Studio Code 2024年8月发布
  • 【话题】重塑未来:AI辅助编程对程序员工作的影响与应对策略
  • 在Debian上安装freeswitch
  • 论文分享 | Fuzz4All: 基于大语言模型的通用模糊测试
  • VS Code 配置docker 管理员权限终端
  • 使用Linux实现FTP云盘1
  • tombo resquiggle
  • vue3获取vue实例 并注册全局属性方法
  • function calling后,如何让大模型进行自然语言输出?
  • Android笔试面试题AI答之Kotlin(8)
  • LVS服务的搭建之NAT模式、DR模式的搭建实战
  • Raft分布式存储
  • 【Linux】使用nm命令查看动态库包含的符号表
  • 你还不知道苹果手机截长图的方法?4 种方法都可以
  • C++选择题带答案
  • Unity动画模块 之 简单创建一个序列帧动画
  • 学会高效记录并整理编程学习笔记
  • Llama 3.1中文微调数据集已上线,超大模型一键部署
  • css实现太极图
  • Android 13 移植EthernetSettings/Ethernet更新