(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生效
相关文章:
 
(javaweb)分层解耦
目录 一.三层架构 二.分层解耦 三.IOC&DI入门 四.IOC详解 五. DI详解 一.三层架构 复用性差,难以维护和管理 前端发起请求,先会到达controller,再调用service进行逻辑处理,逻辑处理的前提是先拿到数据,到dao…...
 
2024华为数通HCIP-datacom最新题库(H12-831变题更新⑨)
请注意,华为HCIP-Datacom考试831已变题 请注意,华为HCIP-Datacom考试831已变题 请注意,华为HCIP-Datacom考试831已变题 近期打算考HCIP的朋友注意了,如果你准备去考试,还是用的之前的题库,切记暂缓。 如…...
 
PCIe学习笔记(21)
读请求的数据返回(Data Return for Read Requests) •针对内存读取请求的单个完成可能提供少于请求的全部数据量,只要对于给定请求的所有完成在组合起来时返回了读取请求中请求的数据量。 ◦不同请求的完成不能合并。 ◦I/O和Configuratio…...
 
分享Embedding 模型微调的实现
写在前面 \1. 当前比较主流的Embedding开源模型有哪些? 答:1. m3e(Moka Massive Mixed Embedding) 2. BAAI/bge-large-zh-v1.5。更多的开源模型评测榜单可见: https://huggingface.co/spaces/mteb/leaderboard \2. 模型的作用? …...
 
TED: 1靶场复现【附代码】(权限提升)
机下载地址: Ted: 1 ~ VulnHubTed: 1, made by Avraham Cohen. Download & walkthrough links are available.https://www.vulnhub.com/entry/ted-1,327/ 1. 主机发现端口扫描目录扫描敏感信息获取 1.1. 主机发现 nmap -sn 192.168.59.0/24|grep -B 2 00:0C…...
 
Python(TensorFlow)衍射光学层卷积算法模拟(英伟达GPU)
🎯要点 🎯衍射光学卷积算法模拟 | 🎯模拟或数字电子计算之前加入一层光学计算 | 🎯前馈卷积神经网络计算成像系统对输入图像进行分类 | 🎯相位掩模利用线性空间不变成像系统执行固有卷积 📜用例 Python非…...
 
iOS开发进阶(二十二):Xcode* 离线安装 iOS Simulator
文章目录 一、前言二、模拟器安装 一、前言 Xcode 15 安装包的大小相比之前更小,因为除了 macOS 的 Components,其他都需要动态下载安装,否则提示 iOS 17 Simulator Not Installed。 如果不安装对应的运行模拟库,真机和模拟器无法…...
 
Prostgresql的Timescaledb插件/扩展部署
背景:研发需求,需要把docker部署得postgresql迁移到新的节点并要求再本地部署,提前查看数据库需要那些插件,并进行安装,docker部署的默认有插件。 版本对比:postgresql版本对应某个Timescaledb版本 我得p…...
 
分布式知识总结(一致性Hash算法)
文章收录在网站:http://hardyfish.top/ 文章收录在网站:http://hardyfish.top/ 文章收录在网站:http://hardyfish.top/ 文章收录在网站:http://hardyfish.top/ 一致性Hash算法 假如有三台服务器编号node0、node1、node2&…...
图数据库在社交网络分析中的应用
随着社交网络的飞速发展,用户之间的关系变得日益复杂。传统的关系型数据库由于其表结构的限制,难以高效地处理和查询这些复杂的网络数据。图数据库以其独特的图模型结构,能够更好地表示和分析社交网络中的关系,因而在社交网络分析…...
 
Git基础使用教程
版本控制手册 本文中出现的 [ ] 为根据需求自行修改的变量。 基本命令 git init:将当前目录配置成git仓库,信息记录在隐藏的.git文件夹中。 git config --global user.name [xxx]:设置全局用户名,信息记录在~/.gitconfig文件中。…...
技术速递|Python in Visual Studio Code 2024年8月发布
排版:Alan Wang 我们很高兴地宣布 Visual Studio Code 的 Python 和 Jupyter 扩展将于 2023 年 8 月发布! 此版本包括以下公告: 面向贡献者的 Python 扩展开发容器用于运行带有参数的 Python 文件的调试配置Python 扩展 API 的 Npm 包容错 …...
 
【话题】重塑未来:AI辅助编程对程序员工作的影响与应对策略
目录 人工智能时代,程序员如何保持核心竞争力? 引言 方向一:AI辅助编程对程序员工作的影响 效率提升 代码质量 潜在风险 方向二:程序员应重点发展的核心能力 复杂系统设计 跨学科知识整合 与AI协作的能力 方向三:人机协…...
在Debian上安装freeswitch
在Debian上安装freeswitch 说明: 首次发表日期:2024-08-12参考文档: https://medium.com/jogikrunal9477/ultimate-guide-to-installing-freeswitch-on-ubuntu-22-04-lts-3745ef6a6bd6https://developer.signalwire.com/freeswitch/FreeSWI…...
 
论文分享 | Fuzz4All: 基于大语言模型的通用模糊测试
大语言模型是当前最受关注的研究热点,基于其生成和理解能力,对现有领域在提升性能和效果上做更多尝试。分享一篇发表于2024年ICSE会议的论文Fuzz4All,它组合多个大语言模型以非常轻量且黑盒的方式,实现了一种跨语言和软件的通用模…...
 
VS Code 配置docker 管理员权限终端
问题描述 在容器中需要使用sudo或者su root时候,权限不够,被灵魂提问。 然而,镜像是官方发布的,翻遍了githubissues也没有找到password. 解决 Attach shell 在docker插件中,attach shell 可以直接获得shell。 所…...
 
使用Linux实现FTP云盘1
关于FTP服务器 FTP(文件传输协议)服务器是在互联网上提供文件存储和访问服务的计算机,它们依照FTP 协议提供服务。 FTP是File Transfer Protocol(文件传输协议)。 程序运行,服务端不断接收客户端指令,服务 端可同时处…...
tombo resquiggle
Re-squiggle 算法 简介 纳米孔读取产生的电流信号水平数据称为squiggle。将这些squiggle信息进行基底呼叫通常与参考序列相比会包含一些错误。Re-squiggle算法定义了从squiggle到参考序列的新分配,即重新squiggle。 Re-squiggle算法是Tombo框架的基础。该算法输入包含原始信…...
 
vue3获取vue实例 并注册全局属性方法
vue3注册全局属性方法 前言一、app.config.globalProperties1 注册实例2 注册方法 二、依赖注入(Provide / Inject)1 注册实例2 注册方法3 一次性多次传入 最后 前言 在使用 Vue 时,多个地方使用同一个方法导致每个地方都需要按需引用&#…...
function calling后,如何让大模型进行自然语言输出?
在现代的自然语言处理(NLP)系统中,Function Calling 是指模型在对话过程中调用外部函数以获取特定数据或执行特定操作的能力。在 Function Calling 后,你可以将接收到的数据发送回大模型,并生成自然语言输出。以下是如…...
基于大模型的 UI 自动化系统
基于大模型的 UI 自动化系统 下面是一个完整的 Python 系统,利用大模型实现智能 UI 自动化,结合计算机视觉和自然语言处理技术,实现"看屏操作"的能力。 系统架构设计 #mermaid-svg-2gn2GRvh5WCP2ktF {font-family:"trebuchet ms",verdana,arial,sans-…...
 
阿里云ACP云计算备考笔记 (5)——弹性伸缩
目录 第一章 概述 第二章 弹性伸缩简介 1、弹性伸缩 2、垂直伸缩 3、优势 4、应用场景 ① 无规律的业务量波动 ② 有规律的业务量波动 ③ 无明显业务量波动 ④ 混合型业务 ⑤ 消息通知 ⑥ 生命周期挂钩 ⑦ 自定义方式 ⑧ 滚的升级 5、使用限制 第三章 主要定义 …...
 
高频面试之3Zookeeper
高频面试之3Zookeeper 文章目录 高频面试之3Zookeeper3.1 常用命令3.2 选举机制3.3 Zookeeper符合法则中哪两个?3.4 Zookeeper脑裂3.5 Zookeeper用来干嘛了 3.1 常用命令 ls、get、create、delete、deleteall3.2 选举机制 半数机制(过半机制࿰…...
解决本地部署 SmolVLM2 大语言模型运行 flash-attn 报错
出现的问题 安装 flash-attn 会一直卡在 build 那一步或者运行报错 解决办法 是因为你安装的 flash-attn 版本没有对应上,所以报错,到 https://github.com/Dao-AILab/flash-attention/releases 下载对应版本,cu、torch、cp 的版本一定要对…...
Angular微前端架构:Module Federation + ngx-build-plus (Webpack)
以下是一个完整的 Angular 微前端示例,其中使用的是 Module Federation 和 npx-build-plus 实现了主应用(Shell)与子应用(Remote)的集成。 🛠️ 项目结构 angular-mf/ ├── shell-app/ # 主应用&…...
代码随想录刷题day30
1、零钱兑换II 给你一个整数数组 coins 表示不同面额的硬币,另给一个整数 amount 表示总金额。 请你计算并返回可以凑成总金额的硬币组合数。如果任何硬币组合都无法凑出总金额,返回 0 。 假设每一种面额的硬币有无限个。 题目数据保证结果符合 32 位带…...
 
无人机侦测与反制技术的进展与应用
国家电网无人机侦测与反制技术的进展与应用 引言 随着无人机(无人驾驶飞行器,UAV)技术的快速发展,其在商业、娱乐和军事领域的广泛应用带来了新的安全挑战。特别是对于关键基础设施如电力系统,无人机的“黑飞”&…...
Java数值运算常见陷阱与规避方法
整数除法中的舍入问题 问题现象 当开发者预期进行浮点除法却误用整数除法时,会出现小数部分被截断的情况。典型错误模式如下: void process(int value) {double half = value / 2; // 整数除法导致截断// 使用half变量 }此时...
腾讯云V3签名
想要接入腾讯云的Api,必然先按其文档计算出所要求的签名。 之前也调用过腾讯云的接口,但总是卡在签名这一步,最后放弃选择SDK,这次终于自己代码实现。 可能腾讯云翻新了接口文档,现在阅读起来,清晰了很多&…...
人工智能 - 在Dify、Coze、n8n、FastGPT和RAGFlow之间做出技术选型
在Dify、Coze、n8n、FastGPT和RAGFlow之间做出技术选型。这些平台各有侧重,适用场景差异显著。下面我将从核心功能定位、典型应用场景、真实体验痛点、选型决策关键点进行拆解,并提供具体场景下的推荐方案。 一、核心功能定位速览 平台核心定位技术栈亮…...




















