当前位置: 首页 > 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生效

​​​​​​​

 

相关文章:

(javaweb)分层解耦

目录 一.三层架构 二.分层解耦 三.IOC&DI入门 四.IOC详解 五. DI详解 一.三层架构 复用性差&#xff0c;难以维护和管理 前端发起请求&#xff0c;先会到达controller&#xff0c;再调用service进行逻辑处理&#xff0c;逻辑处理的前提是先拿到数据&#xff0c;到dao…...

2024华为数通HCIP-datacom最新题库(H12-831变题更新⑨)

请注意&#xff0c;华为HCIP-Datacom考试831已变题 请注意&#xff0c;华为HCIP-Datacom考试831已变题 请注意&#xff0c;华为HCIP-Datacom考试831已变题 近期打算考HCIP的朋友注意了&#xff0c;如果你准备去考试&#xff0c;还是用的之前的题库&#xff0c;切记暂缓。 如…...

PCIe学习笔记(21)

读请求的数据返回&#xff08;Data Return for Read Requests&#xff09; •针对内存读取请求的单个完成可能提供少于请求的全部数据量&#xff0c;只要对于给定请求的所有完成在组合起来时返回了读取请求中请求的数据量。 ◦不同请求的完成不能合并。 ◦I/O和Configuratio…...

分享Embedding 模型微调的实现

写在前面 \1. 当前比较主流的Embedding开源模型有哪些&#xff1f; 答&#xff1a;1. m3e(Moka Massive Mixed Embedding) 2. BAAI/bge-large-zh-v1.5。更多的开源模型评测榜单可见&#xff1a; https://huggingface.co/spaces/mteb/leaderboard \2. 模型的作用&#xff1f; …...

TED: 1靶场复现【附代码】(权限提升)

机下载地址&#xff1a; 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)

&#x1f3af;要点 &#x1f3af;衍射光学卷积算法模拟 | &#x1f3af;模拟或数字电子计算之前加入一层光学计算 | &#x1f3af;前馈卷积神经网络计算成像系统对输入图像进行分类 | &#x1f3af;相位掩模利用线性空间不变成像系统执行固有卷积 &#x1f4dc;用例 Python非…...

iOS开发进阶(二十二):Xcode* 离线安装 iOS Simulator

文章目录 一、前言二、模拟器安装 一、前言 Xcode 15 安装包的大小相比之前更小&#xff0c;因为除了 macOS 的 Components&#xff0c;其他都需要动态下载安装&#xff0c;否则提示 iOS 17 Simulator Not Installed。 如果不安装对应的运行模拟库&#xff0c;真机和模拟器无法…...

Prostgresql的Timescaledb插件/扩展部署

背景&#xff1a;研发需求&#xff0c;需要把docker部署得postgresql迁移到新的节点并要求再本地部署&#xff0c;提前查看数据库需要那些插件&#xff0c;并进行安装&#xff0c;docker部署的默认有插件。 版本对比&#xff1a;postgresql版本对应某个Timescaledb版本 我得p…...

分布式知识总结(一致性Hash算法)

文章收录在网站&#xff1a;http://hardyfish.top/ 文章收录在网站&#xff1a;http://hardyfish.top/ 文章收录在网站&#xff1a;http://hardyfish.top/ 文章收录在网站&#xff1a;http://hardyfish.top/ 一致性Hash算法 假如有三台服务器编号node0、node1、node2&…...

图数据库在社交网络分析中的应用

随着社交网络的飞速发展&#xff0c;用户之间的关系变得日益复杂。传统的关系型数据库由于其表结构的限制&#xff0c;难以高效地处理和查询这些复杂的网络数据。图数据库以其独特的图模型结构&#xff0c;能够更好地表示和分析社交网络中的关系&#xff0c;因而在社交网络分析…...

Git基础使用教程

版本控制手册 本文中出现的 [ ] 为根据需求自行修改的变量。 基本命令 git init&#xff1a;将当前目录配置成git仓库&#xff0c;信息记录在隐藏的.git文件夹中。 git config --global user.name [xxx]&#xff1a;设置全局用户名&#xff0c;信息记录在~/.gitconfig文件中。…...

技术速递|Python in Visual Studio Code 2024年8月发布

排版&#xff1a;Alan Wang 我们很高兴地宣布 Visual Studio Code 的 Python 和 Jupyter 扩展将于 2023 年 8 月发布&#xff01; 此版本包括以下公告&#xff1a; 面向贡献者的 Python 扩展开发容器用于运行带有参数的 Python 文件的调试配置Python 扩展 API 的 Npm 包容错 …...

【话题】重塑未来:AI辅助编程对程序员工作的影响与应对策略

目录 人工智能时代&#xff0c;程序员如何保持核心竞争力&#xff1f; 引言 方向一&#xff1a;AI辅助编程对程序员工作的影响 效率提升 代码质量 潜在风险 方向二&#xff1a;程序员应重点发展的核心能力 复杂系统设计 跨学科知识整合 与AI协作的能力 方向三&#xff1a;人机协…...

在Debian上安装freeswitch

在Debian上安装freeswitch 说明&#xff1a; 首次发表日期&#xff1a;2024-08-12参考文档&#xff1a; https://medium.com/jogikrunal9477/ultimate-guide-to-installing-freeswitch-on-ubuntu-22-04-lts-3745ef6a6bd6https://developer.signalwire.com/freeswitch/FreeSWI…...

论文分享 | Fuzz4All: 基于大语言模型的通用模糊测试

大语言模型是当前最受关注的研究热点&#xff0c;基于其生成和理解能力&#xff0c;对现有领域在提升性能和效果上做更多尝试。分享一篇发表于2024年ICSE会议的论文Fuzz4All&#xff0c;它组合多个大语言模型以非常轻量且黑盒的方式&#xff0c;实现了一种跨语言和软件的通用模…...

VS Code 配置docker 管理员权限终端

问题描述 在容器中需要使用sudo或者su root时候&#xff0c;权限不够&#xff0c;被灵魂提问。 然而&#xff0c;镜像是官方发布的&#xff0c;翻遍了githubissues也没有找到password. 解决 Attach shell 在docker插件中&#xff0c;attach shell 可以直接获得shell。 所…...

使用Linux实现FTP云盘1

关于FTP服务器 FTP&#xff08;文件传输协议&#xff09;服务器是在互联网上提供文件存储和访问服务的计算机&#xff0c;它们依照FTP 协议提供服务。 FTP是File Transfer Protocol(文件传输协议)。 程序运行&#xff0c;服务端不断接收客户端指令&#xff0c;服务 端可同时处…...

tombo resquiggle

Re-squiggle 算法 简介 纳米孔读取产生的电流信号水平数据称为squiggle。将这些squiggle信息进行基底呼叫通常与参考序列相比会包含一些错误。Re-squiggle算法定义了从squiggle到参考序列的新分配,即重新squiggle。 Re-squiggle算法是Tombo框架的基础。该算法输入包含原始信…...

vue3获取vue实例 并注册全局属性方法

vue3注册全局属性方法 前言一、app.config.globalProperties1 注册实例2 注册方法 二、依赖注入&#xff08;Provide / Inject&#xff09;1 注册实例2 注册方法3 一次性多次传入 最后 前言 在使用 Vue 时&#xff0c;多个地方使用同一个方法导致每个地方都需要按需引用&#…...

function calling后,如何让大模型进行自然语言输出?

在现代的自然语言处理&#xff08;NLP&#xff09;系统中&#xff0c;Function Calling 是指模型在对话过程中调用外部函数以获取特定数据或执行特定操作的能力。在 Function Calling 后&#xff0c;你可以将接收到的数据发送回大模型&#xff0c;并生成自然语言输出。以下是如…...

Python爬虫(二):爬虫完整流程

爬虫完整流程详解&#xff08;7大核心步骤实战技巧&#xff09; 一、爬虫完整工作流程 以下是爬虫开发的完整流程&#xff0c;我将结合具体技术点和实战经验展开说明&#xff1a; 1. 目标分析与前期准备 网站技术分析&#xff1a; 使用浏览器开发者工具&#xff08;F12&…...

Swagger和OpenApi的前世今生

Swagger与OpenAPI的关系演进是API标准化进程中的重要篇章&#xff0c;二者共同塑造了现代RESTful API的开发范式。 本期就扒一扒其技术演进的关键节点与核心逻辑&#xff1a; &#x1f504; 一、起源与初创期&#xff1a;Swagger的诞生&#xff08;2010-2014&#xff09; 核心…...

OPENCV形态学基础之二腐蚀

一.腐蚀的原理 (图1) 数学表达式&#xff1a;dst(x,y) erode(src(x,y)) min(x,y)src(xx,yy) 腐蚀也是图像形态学的基本功能之一&#xff0c;腐蚀跟膨胀属于反向操作&#xff0c;膨胀是把图像图像变大&#xff0c;而腐蚀就是把图像变小。腐蚀后的图像变小变暗淡。 腐蚀…...

Java线上CPU飙高问题排查全指南

一、引言 在Java应用的线上运行环境中&#xff0c;CPU飙高是一个常见且棘手的性能问题。当系统出现CPU飙高时&#xff0c;通常会导致应用响应缓慢&#xff0c;甚至服务不可用&#xff0c;严重影响用户体验和业务运行。因此&#xff0c;掌握一套科学有效的CPU飙高问题排查方法&…...

2025季度云服务器排行榜

在全球云服务器市场&#xff0c;各厂商的排名和地位并非一成不变&#xff0c;而是由其独特的优势、战略布局和市场适应性共同决定的。以下是根据2025年市场趋势&#xff0c;对主要云服务器厂商在排行榜中占据重要位置的原因和优势进行深度分析&#xff1a; 一、全球“三巨头”…...

推荐 github 项目:GeminiImageApp(图片生成方向,可以做一定的素材)

推荐 github 项目:GeminiImageApp(图片生成方向&#xff0c;可以做一定的素材) 这个项目能干嘛? 使用 gemini 2.0 的 api 和 google 其他的 api 来做衍生处理 简化和优化了文生图和图生图的行为(我的最主要) 并且有一些目标检测和切割(我用不到) 视频和 imagefx 因为没 a…...

Python Ovito统计金刚石结构数量

大家好,我是小马老师。 本文介绍python ovito方法统计金刚石结构的方法。 Ovito Identify diamond structure命令可以识别和统计金刚石结构,但是无法直接输出结构的变化情况。 本文使用python调用ovito包的方法,可以持续统计各步的金刚石结构,具体代码如下: from ovito…...

「全栈技术解析」推客小程序系统开发:从架构设计到裂变增长的完整解决方案

在移动互联网营销竞争白热化的当下&#xff0c;推客小程序系统凭借其裂变传播、精准营销等特性&#xff0c;成为企业抢占市场的利器。本文将深度解析推客小程序系统开发的核心技术与实现路径&#xff0c;助力开发者打造具有市场竞争力的营销工具。​ 一、系统核心功能架构&…...

沙箱虚拟化技术虚拟机容器之间的关系详解

问题 沙箱、虚拟化、容器三者分开一一介绍的话我知道他们各自都是什么东西&#xff0c;但是如果把三者放在一起&#xff0c;它们之间到底什么关系&#xff1f;又有什么联系呢&#xff1f;我不是很明白&#xff01;&#xff01;&#xff01; 就比如说&#xff1a; 沙箱&#…...

ZYNQ学习记录FPGA(一)ZYNQ简介

一、知识准备 1.一些术语,缩写和概念&#xff1a; 1&#xff09;ZYNQ全称&#xff1a;ZYNQ7000 All Pgrammable SoC 2&#xff09;SoC:system on chips(片上系统)&#xff0c;对比集成电路的SoB&#xff08;system on board&#xff09; 3&#xff09;ARM&#xff1a;处理器…...